採藥-動態規劃(01揹包)
採用一維陣列進行優化
#include<cstdio>
#include<algorithm>
using namespace std;
int w[105], v[105];
int dp[1005];
int main()
{
int m, n;
scanf("%d%d", &m, &n);
for(int i=1; i<=n; i++)
scanf("%d%d", &w[i], &v[i]);
for(int i=1; i<=n; i++)
for(int j=m; j>=w[i]; j--)
dp[j]=max(dp[j], dp[j- w[i]]+v[i]);
printf("%d", dp[m]);
}
相關推薦
採藥-動態規劃(01揹包)
採用一維陣列進行優化 #include<cstdio> #include<algorithm> using namespace std; int w[105], v[105]; int dp[1005]; int main() { int m, n; sca
HDOJ 題目2602 Bone Collector(動態規劃,01揹包)
Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 29252 Accepted
HDU 2602 動態規劃+二維陣列、一維陣列兩解法(01揹包)
這道題就是簡單用二維陣列解決的時候,就是簡單的動態規劃,但是坑就坑在可能出現體積為0但是價值不為0的例子 一:二維陣列 下面是錯誤的程式碼 #include <iostream> #include <cstring> #include <
Vijos P1133 裝箱問題(動態規劃,01揹包,NOIP)
noip2001普及組第四題 樣例分析 輸入容積24,6件物品 因為容量最多可達20000,為節省空間,只用一維陣列,用f[j]表示在容積為j時所裝物品所佔用的最大體積 對每一件物品,有放或不放兩種策略,不放,則體積仍為之前的f[j];放,則須留有足夠的空間,並佔用一定的體積,即f[j-v]+v 為了保
洛谷1048 採藥(01揹包)
傳送門 【題目分析】 這個兩維降一維妙妙妙啊。。。。。。 好吧我已經菜的做01揹包了。。。。 【程式碼~】 #include<bits/stdc++.h> using namespace std; const int MAXN=110; int n,m; int w
動態規劃(dynamic programming)
program 選擇 因此 移動 開始 解決 特征 尋找 ima 1、動態規劃是通過組合字問題的解而解決整個問題的。 2、它與分治法的區別: 分治法是將問題分解為一些獨立的子問題,遞歸的求解各個子問題,然後合並子問題的解而得到源問題的解。 而動態規劃適合用於
動態規劃(dynamic programming)(二、最優子問題與重疊子問題,以及與貪心的區別)
貪心策略 找到 算法 找問題 貪心 模式 解決 策略 最優 一、動態規劃基礎 雖然我們在(一)中討論過動態規劃的裝配線問題,但是究竟什麽時候使用動態規劃?那麽我們就要清楚動態規劃方法的最優化問題中的兩個要素:最優子結構和重疊子問題。 1、最優子結構 1)如果
B - Bone Collector (01揹包)
題目: 塗奧最近迷上了吃雞,房間有n個配件,每個配件有c(c<=1e3)的重量和v(v<=1e3)的價值,哇,塗奧撿了一個2級包,容量為s,所以塗奧最多當多肥的快遞員呢? Input 輸入的第一行是T, 表示有一共要打T場比賽. 每組資料由三行組成. 第1行包含兩個整數
和為K的組合(01揹包)
給出N個正整陣列成的陣列A,求能否從中選出若干個,使他們的和為K。如果可以,輸出:“Yes”,否則輸出"No"。 Input 第1行:2個數N, K, N為陣列的長度, K為需要判斷的和(2 <= N <= 20,1 <= K <= 10^9) 第2 - N + 1行
演算法基礎--動態規劃(筆試記錄)
#include<iostream> using namespace std; int main() { //輸入部分 //輸入寶箱的個數n,和現在還剩餘的魔法值w int n,w; cin>>n>>w; //int n = 5,w = 10;
HDU 2602 Bone Collector(01揹包)
Bone Collector Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , s
NYOJ 289 - 蘋果(01揹包)
題目連結 http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=289 【題目描述】 ctest有n個蘋果,要將它放入容量為v的揹包。給出第i個蘋果的大小和價錢,求出能放入揹包的蘋果的總價錢最大值。 輸入 有多組測試資料,每組測試資料
nyoj 325 - zb的生日(01揹包)
題目連結 http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=325 【題目描述】 今天是陰曆七月初五,acm隊員zb的生日。zb正在和C小加、never在武漢集訓。他想給這兩位兄弟買點什麼慶祝生日,經過調查,zb發現C小加和never
HDU 2602 - Bone Collector(01揹包)
題目連結 http://acm.hdu.edu.cn/showproblem.php?pid=2602 【思路】 01揹包問題 #include<bits/stdc++.h> using namespace std; const int maxn=1005; int
2018.11.07【NOIP訓練】lzy的遊戲(01揹包)
傳送門 解析: 一個月前口胡了一下這道題,然後現在才在OJ上找到。。。 其實最困擾的是後效性的處理,我第一次口胡的時候總是覺得這個後效性環形怎麼處理都不太對,要麼不對要麼複雜度會爆炸,但是其實我們只需要知道一件事情,就是我們選擇的卡牌不超過總的張數,我們就總有辦法構造出
二維動態規劃(收集蘋果)
平面上有N*M個格子,每個格子中放著一定數量的蘋果。你從左上角的格子開始,每一步只能向下走或是向右走,每次走到一個格子上就把格子裡的蘋果收集起來,這樣下去,你最多能收集到多少個蘋果 解這個問題與解其它的DP問題幾乎沒有什麼兩樣。第一步找到問題的“狀態”,第二步找到“狀態轉移方程”,然後基本上
ZOJ 3956——Course Selection System(01揹包)
題目連結: 因為c的值很小,所以以c看做重量,把h當做價值 01揹包,取儘可能大的h 因為當c固定時,這個式子只需要看前面 h*h-h*c=h*(h-c) h大於c時,肯定h越大越好 h小於c時,表示式的值必定小於零,肯定是不考慮的 #include <cstdio&g
POJ-2184 Cow Exhibition 【動態規劃DP+01揹包變換】
題目傳送門 題目:共有N頭牛,接下來N行是每頭牛的智商和情商,從這些牛中任意選取若干頭牛,使得牛的智商和+情商和最大,同時智商和(TS),情商和(TF)都不小於0。 題解:以智商作為容量,求前i頭牛在智商為j的情況下的最大情商 。因為有負數,所以容量擴大100000,修改dp陣
51Nod1007 正整數分組(01揹包)
這道題思路就是算出陣列總和,在陣列中找到和最接近陣列總和一半的一些數。 可以用01揹包解決這道題,dp[i][j]表示在陣列前i項中最接近j的最大值。 狀態轉移方程為:dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i]]+a[i]); #include<
飯卡 (01揹包)
電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買一個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功(即使購買後卡上餘額為負),否則無法購買(即使金額足夠)。所以大家都希望儘量使卡上的餘額最少。 某天,食堂中有n種菜出售,每種菜可購買一次。已知每種菜的價格以