【藍橋杯python研究生組備賽】005 數學與簡單DP

題目1 01背包

有 N 件物品和一個容量是 V 的背包。每件物品只能使用一次。

第 i 件物品的體積是 vi,價值是 wi。

求解將哪些物品裝入背包,可使這些物品的總體積不超過背包容量,且總價值最大。
輸出最大價值。

輸入格式

第一行兩個整數,N,V,用空格隔開,分別表示物品數量和背包容積。

接下來有 N 行,每行兩個整數 vi,wi,用空格隔開,分別表示第 i 件物品的體積和價值。

輸出格式

輸出一個整數,表示最大價值。

數據范圍

0<N,V≤1000
0<vi,wi≤1000

輸入樣例
4 5
1 2
2 4
3 4
4 5
輸出樣例:
8

python代碼

N=1010
n,v=map(int,input().split())
data=[[0,0]]
for i in range(n):a,b=map(int,input().split())data.append([a,b])
dp=[[0 for _ in range(N)]for _ in range(N)]# print(data)
for i in range(1,n+1):for j in range(1,v+1):if data[i][0]>j:dp[i][j]=dp[i-1][j]else:dp[i][j]=max(dp[i-1][j],dp[i-1][j-data[i][0]]+data[i][1])
print(dp[n][v])

知識點

  1. 動態規劃,因為需要用到下標i-1,一般下標都是從1開始
  2. 背包問題是組合問題的范疇,另外幾個模型是,路線問題、最長上升子序列問題等
  3. dp[i][j]含義:從前i個物品中選,總體積不超過j的選法的集合
    • 不選擇第i個物品:等價于dp[i-1][j]
    • 選擇第i個物品:首先看第i個物品的體積是否大于體積,若小于,則比較最終的價值相比 不選更高,若更高,則選擇第i個物品

題目2 摘花生

Hello Kitty想摘點花生送給她喜歡的米老鼠。

她來到一片有網格狀道路的矩形花生地(如下圖),從西北角進去,東南角出來。

地里每個道路的交叉點上都有種著一株花生苗,上面有若干顆花生,經過一株花生苗就能摘走該它上面所有的花生。

Hello Kitty只能向東或向南走,不能向西或向北走。

問Hello Kitty最多能夠摘到多少顆花生。

1.gif

輸入格式

第一行是一個整數T,代表一共有多少組數據。

接下來是T組數據。

每組數據的第一行是兩個整數,分別代表花生苗的行數R和列數 C。

每組數據的接下來R行數據,從北向南依次描述每行花生苗的情況。每行數據有C個整數,按從西向東的順序描述了該行每株花生苗上的花生數目M。

輸出格式

對每組輸入數據,輸出一行,內容為Hello Kitty能摘到得最多的花生顆數。

數據范圍

1≤T≤100,
1≤R,C≤100,
0≤M≤1000

輸入樣例:
2
2 2
1 1
3 4
2 3
2 3 4
1 6 5
輸出樣例:
8
16
```## python代碼```python
t=int(input())
N=110
while t:r,c=map(int,input().split())data=[[0 for _ in range(c+1)]for _ in range(r+1)]dp=[[0 for _ in range(N)]for _ in range(N)]#初始化狀態for i in range(1,r+1):data[i]=[0]+list(map(int,input().split()))for i in range(1,r+1):for j in range(1,c+1):dp[i][j]=max(dp[i-1][j]+data[i][j],dp[i][j-1]+data[i][j])print(dp[r][c])t-=1

知識點

  1. 從第一行開始置換每一行數據:
    for i in range(1,r+1):data[i]=[0]+list(map(int,input().split()))
    
  2. dp[i][j]含義:從起點到(i,j)坐標的路線集合,集合劃分為兩類
    • 上一步是從左往右走:等價于dp[i][j-1]
    • 上一步是從上往下走:等價于dp[i-1][j]
  3. 集合計算:找到最大值,加上當前數據值data[i][j]

題目3 最長上升子序列

題目描述

這是一個簡單的動規板子題。

給出一個由 n ( n ≤ 5000 ) n(n\le 5000) n(n5000) 個不超過 1 0 6 10^6 106 的正整數組成的序列。請輸出這個序列的最長上升子序列的長度。

最長上升子序列是指,從原序列中按順序取出一些數字排在一起,這些數字是逐漸增大的。

輸入格式

第一行,一個整數 n n n,表示序列長度。

第二行有 n n n 個整數,表示這個序列。

輸出格式

一個整數表示答案。

輸入輸出樣例

輸入

6
1 2 4 1 3 4

輸出

4

說明/提示

分別取出 1 1 1 2 2 2 3 3 3 4 4 4 即可。

python代碼

#DP,總是有一組數據超時,拿到80%分數
n=int(input())
data=[0]+list(map(int,input().split()))
# print(data)
N=5010
dp=[0]*(n+1)
for i in range(1,n+1):dp[i]=1for j in range(1,i):if data[j]<data[i]:dp[i]=max(dp[i],dp[j]+1)
print(max(dp))#二分,全部通過
import bisectn=int(input())
data=list(map(int,input().split()))#讀取數據lis=[]#存放
for num in data:pos=bisect.bisect_left(lis,num)if pos==len(lis):lis.append(num)else:lis[pos]=num
# print(lis)
print(len(lis))

知識點

  1. dp[i]:所有以i結尾的嚴格上升子序列長度
    • data[j]<data[i],可以放在前面,那么dp[i]=dp[j]+1
    • 但是dp[i]>dp[j]+1,那么dp[i]保持
  2. pos=bisect.bisect_left(lis,num):在lis中找到不大于num的 下標pos

題目4 買不到的數目

小明開了一家糖果店。

他別出心裁:把水果糖包成4顆一包和7顆一包的兩種。

糖果不能拆包賣。

小朋友來買糖的時候,他就用這兩種包裝來組合。

當然有些糖果數目是無法組合出來的,比如要買 10 顆糖。

你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。

大于17的任何數字都可以用4和7組合出來。

本題的要求就是在已知兩個包裝的數量時,求最大不能組合出的數字。

輸入格式

兩個正整數 n,m,表示每種包裝中糖的顆數。

輸出格式

一個正整數,表示最大不能買到的糖數。

數據范圍

2≤n,m≤1000,
保證數據一定有解。

輸入樣例:
4 7
輸出樣例:
17

思路

藍橋杯的數學頻率還是很高的,實在不會,就打表找規律
藍橋杯考點頻率
打表找規律
3 2 1
3 5 7
3 7 11
3 8 13
n*m-n-m

python代碼

n,m=map(int,input().split())
print(n*m-n-m)

知識點

找規律

題目5 螞蟻感冒

長 100 厘米的細長直桿子上有 n 只螞蟻。

它們的頭有的朝左,有的朝右。

每只螞蟻都只能沿著桿子向前爬,速度是 1 厘米/秒。

當兩只螞蟻碰面時,它們會同時掉頭往相反的方向爬行。

這些螞蟻中,有 1 只螞蟻感冒了。

并且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。

請你計算,當所有螞蟻都爬離桿子時,有多少只螞蟻患上了感冒。

輸入格式

第一行輸入一個整數 n, 表示螞蟻的總數。

接著的一行是 n 個用空格分開的整數 Xi, Xi 的絕對值表示螞蟻離開桿子左邊端點的距離。

正值表示頭朝右,負值表示頭朝左,數據中不會出現 0 值,也不會出現兩只螞蟻占用同一位置。

其中,第一個數據代表的螞蟻感冒了。

輸出格式

輸出1個整數,表示最后感冒螞蟻的數目。

數據范圍

1<n<50,
0<|Xi|<100

輸入樣例1:
3
5 -2 8
輸出樣例1:
1
輸入樣例2:
5
-10 8 -20 12 25
輸出樣例2:
3

思路

只考慮什么情況會對結果產生影響?(第一個是感冒的)

  • 第一個螞蟻向右運動,位于第一個螞蟻右側,且向左運動
  • 第一個螞蟻向左運動,位于第一個螞蟻左側,且向右運動

python代碼

n=int(input())
data=list(map(int,input().split()))left=0
right=0
ans=1#最初的第一個數據是感冒的for i in range(1,n):if data[i]<0 and abs(data[i])>abs(data[0]):right+=1elif data[i]>0 and abs(data[i])<abs(data[0]):left+=1if data[0]>0:#第一個螞蟻是向右的,位于右側且所有向左運動的都會感冒if right>0:ans+=(right+left)else:ans=1
else:if left>0:ans+=(right+left)else:ans=1
print(ans)   

題目6 飲料換購

樂羊羊飲料廠正在舉辦一次促銷優惠活動。樂羊羊C型飲料,憑3個瓶蓋可以再換一瓶C型飲料,并且可以一直循環下去(但不允許暫借或賒賬)。

請你計算一下,如果小明不浪費瓶蓋,盡量地參加活動,那么,對于他初始買入的 n 瓶飲料,最后他一共能喝到多少瓶飲料。

輸入格式

輸入一個整數 n,表示初始買入的飲料數量。

輸出格式

輸出一個整數,表示一共能夠喝到的飲料數量。

數據范圍

0<n<10000

輸入樣例:
100
輸出樣例:
149

python代碼

n=int(input())
gz=n#蓋子初始數量為n
ans=n#最終喝了多少瓶
while gz>=3:bottle,newgz=divmod(gz,3)ans+=bottlegz=bottle+newgz
print(ans)

知識點

  1. 沒什么知識點,就是簡單模擬題目

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72713.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72713.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2024年國賽高教杯數學建模E題交通流量管控解題全過程文檔及程序

2024年國賽高教杯數學建模 E題 交通流量管控解題 原題再現 隨著城市化進程的加快、機動車的快速普及&#xff0c;以及人們活動范圍的不斷擴大&#xff0c;城市道路交通擁堵問題日漸嚴重&#xff0c;即使在一些非中心城市&#xff0c;道路交通擁堵問題也成為影響地方經濟發展和…

穿越是時空之門(java)

emm&#xff0c;之前做過一道類似的題目&#xff0c;但是這次又忘了 一開始的錯誤代碼 package Lanqiao;import javax.swing.plaf.synth.SynthTextAreaUI; import java.math.BigInteger;/*** author zb* date2025/3/19 21:33*/ public class L19701 {public static void main…

npm : 無法加載文件 C:\Program Files\nodejs\npm.ps1,因為在此系統上禁止運行腳本的處理方法

1、安裝了node.js后&#xff0c;windows powershell中直接輸入npm&#xff0c;然后就報錯 2、出現原因&#xff1a;權限不夠 系統禁用了腳本的執行&#xff0c;所以我們在windows powershell輸入npm -v的時候&#xff0c;就會報上面的錯誤。 3、解決 Set-ExecutionPolicy Un…

藍橋杯單片機之AT24C02(基于自己對AT24C02的學習和理解)

一、先用抽象法說明原理&#xff0c;讓原理變得簡單易懂&#xff1a; 1、向AT24C02寫入數據&#xff1a; 有個關系戶&#xff0c;他想安排自己的兒子進某個大廈里某個樓層的公司&#xff0c;那么他就要先找到這個公司的地址&#xff0c;然后再找到該公司是第幾樓&#xff0c;最…

Java面試易忽略知識點

1. CompletableFuture中thenApply()與thenCompose()的區別 考察點&#xff1a;組合式異步編程 解析&#xff1a; ?**thenApply()**&#xff1a;接收前序任務結果&#xff0c;返回普通對象&#xff08;同步轉換&#xff09;&#xff0c;適用簡單數據處理。?**thenCompose()*…

VLLM專題(十九)—兼容 OpenAI 的服務器

vLLM 提供了一個 HTTP 服務器,能夠實現 OpenAI 的 Completions API、Chat API 等功能! 您可以通過 vllm serve 命令啟動服務器,或者通過 Docker 啟動: vllm serve NousResearch/Meta-Llama-3-8B-Instruct --dtype auto --api-key token-abc123要調用服務器,您可以使用官…

【云原生之kubernetes實戰】在k8s環境中高效部署minio對象存儲(詳細教程)

【云原生之kubernetes實戰】在k8s環境中高效部署minio對象存儲(詳細教程) 前言一、minio介紹1.1 MinIO簡介1.2 主要特點1.3 主要使用場景二、相關知識介紹2.1 本次實踐存儲介紹2.2 k8s存儲介紹三、本次實踐介紹3.1 本次實踐簡介3.2 本次環境規劃3.3 部署前需準備工作四、檢查…

【高項】信息系統項目管理師(八)項目質量管理【3分】

項目質最管理包括把組織的質量政策應用于規劃、管理、控制項目和產品質量要求。以滿足干系人目標的各個過程。項目質量管理以執行組織的名義支持過程的持續改進活動,項目質量管理需要兼顧項目管理與項目可交付成果兩個方面,它適用于所有項目無論項目的可付成果具有何種特性。質…

python-leetcode 48.括號生成

題目&#xff1a; 數字n代表生成括號的對數&#xff0c;設計一個函數&#xff0c;用于生成所有可能并且有效的括號組合。 方法一&#xff1a;回溯 可以生成所有 2**2n 個 ‘(’ 和 ‘)’ 字符構成的序列&#xff0c;然后檢查每一個是否有效即可 為了生成所有序列&#xff0c…

TDE透明加密技術:免改造實現華為云ECS中數據庫和文件加密存儲

在數字經濟與云計算深度融合的今天&#xff0c;華為云ECS&#xff08;彈性云服務器&#xff09;已成為企業數字化轉型的核心載體&#xff0c;承載著數據庫、文件存儲、AI訓練等關鍵業務。然而&#xff0c;云上數據安全形勢日益嚴峻&#xff1a;2024年全球云環境勒索攻擊同比激增…

3D點云數據處理中的聚類算法總結

1.歐式聚類&#xff1a; 基于點的空間距離&#xff08;歐幾里得距離&#xff09;來分割點云&#xff0c;將距離較近的點歸為同一簇。 歐式聚類需要的參數&#xff1a;鄰域半徑R,簇的最小點閾值minPts&#xff0c;最大點數閾值maxPts。 實現效率&#xff1a; O(n * log n) 實現…

PCL--點云可視化

用于單個顯示、多個顯示的頭文件<visual_.h> visual_.h #pragma once #include <iostream> #include <thread> #include <pcl/visualization/pcl_visualizer.h>using namespace std::chrono_literals;/********************************************…

火星探測發展概述2025.3.20

一.火星探測歷程 1.1 探索啟蒙 火星探測的啟蒙階段可追溯至20世紀60年代,標志著人類對這顆神秘行星的科學探索正式拉開帷幕。這一時期的標志性事件包括: 1960年10月至1964年11月間,蘇聯和美國進行了6次火星探測嘗試,但均以失敗告終。 1964年11月28日,美國成功發射“水手…

DAPO:一個開源的大規模大型語言模型LLM強化學習系統

推斷擴展賦予了大型語言模型前所未有的推理能力,強化學習作為激發復雜推理的核心技術,清華大學聯合字節提出了解耦片段與動態采樣策略優化(DAPO)算法,并全面開源了一個最先進的大規模強化學習系統,該系統使用Qwen2.5-32B基礎模型在AIME 2024上取得了50分的高分。還開源了…

力扣刷題46. 全排列

46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 使用dfs搜索&#xff0c;查找所有的情況&#xff0c;首先定義所有的鏈表集合list&#xff0c;在定義每一種情況的鏈表res&#xff0c;在主函數中遍歷所有的初始元素&#xff0c;首先初始化res&#xff0c;并且添加到res中&…

Metasploit Framework(MSF)使用教程與命令詳解

Metasploit Framework&#xff08;簡稱MSF&#xff09;是一款功能強大的開源滲透測試工具&#xff0c;廣泛應用于網絡安全領域。它集成了大量的漏洞利用模塊&#xff08;exploits&#xff09;、輔助模塊&#xff08;auxiliary&#xff09;和載荷&#xff08;payloads&#xff0…

【Netty】客戶端功能完善

超時控制 public class RequestTimeoutManager {private final HashedWheelTimer timer new HashedWheelTimer();private final ConcurrentMap<Long, Timeout> pendingRequests new ConcurrentHashMap<>();public void addRequest(long requestId, long timeout…

【鴻蒙開發】Hi3861學習筆記- DS18B20溫度傳感器

00. 目錄 文章目錄 00. 目錄01. DS18B20簡介02. DS18B20引腳及電路03. DS18B20內部結構框圖04. DS18B20內存映射05. 硬件設計06. 軟件設計07. 實驗現象08. 附錄 01. DS18B20簡介 DS18B20 是常用的數字溫度傳感器&#xff0c;其輸出的是數字信號&#xff0c;具有體積小&#xf…

跨境大文件傳輸如何突破延遲與丟包雙重困局

一、行業痛點&#xff1a;跨國傳輸的挑戰 在全球化業務場景中&#xff0c;跨境大文件傳輸常面臨網絡延遲高、丟包率頻發等問題。傳統TCP協議因其“先建聯再傳輸”的機制&#xff0c;在高時延、高丟包環境下效率驟降&#xff0c;導致跨國協作、影視渲染、科研數據共享等場景中傳…

uni-app——計時器和界面交互API

API 基本概要 概念說明 API&#xff08;應用程序接口&#xff09;是預先定義的方法集合&#xff0c;用于實現特定功能。在 uni-app 中&#xff0c;通過全局對象 uni 調用 API&#xff0c;例如 uni.getSystemInfoSync 獲取設備信息。 API 分類與調用規則 事件監聽型 以 on 開…