時間限制:1000 ms | 記憶體限制:65535 kb
難度:3
描述 有n個重量和價值分別為wi 和 vi 的 物品,從這些物品中選擇總重量不超過 w
的物品,求所有挑選方案中物品價值總和的最大值。
1 <= n <=100
1 <= wi <= 10^7
1 <= vi <= 100
1 <= w <= 10^9
輸入多組測試資料。
每組測試資料第一行輸入,n 和 w ,接下來有n行,每行輸入兩個數,代表第i個物品的wi 和 vi。
輸出滿足題意的最大價值,每組測試資料佔一行。
樣例輸入
4 5樣例輸出2 31 2
3 42 2
7這道題第一眼看上去沒什麼特別的,,是啊 ,果斷01揹包寫,當真wa...
,,後來仔細讀題發現重量的範圍高達1e9, 顯然這麼大是開不了陣列的。。。苦思半天無果,看了一篇題解之後恍然大悟,自己的01揹包基礎太差了,這道題目只需要把價值和重量翻轉,改用較小(<=100)的價值來開陣列,那麼最後求的就是指定價值下的最小重量(仔細想想吧
),ac**如下
#include#include#include using namespace std ;const int maxn = 1e9 ;
int w[105],v[105] ;
int dp[100000] ;
int n,w ;
int main()
}int res ;
for(int i = sum ;i>=0 ;i--)}}
return 0 ;
}
nyoj 860 又見01揹包(01 揹包)
又見01揹包 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 有n個重量和價值分別為wi 和 vi 的 物品,從這些物品中選擇總重量不超過 w 的物品,求所有挑選方案中物品價值總和的最大值。1 n 100 1 wi 10 7 1 vi 100 1 w 10 9 輸入 多組測試...
NYOJ 860 又見01揹包
很經典的一道揹包題目,一般情況,我們都是把揹包的容量作為陣列的變數,但是這一道題,揹包容量資料量太大了。10 9 把容量和價值進行互換 include iostream include stdio.h include string include cstring include cmath incl...
nyist 860 又見01揹包
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 有n個重量和價值分別為wi 和 vi 的 物品,從這些物品中選擇總重量不超過 w 的物品,求所有挑選方案中物品價值總和的最大值。1 n 100 1 wi 10 7 1 vi 100 1 w 10 9 輸入多組測試資料。每組測試資...