NYOJ 860 又見01揹包(01揹包變形)

2021-08-28 22:38:32 字數 925 閱讀 7320

題目鏈結

【題目描述】

有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 52 3

1 23 4

2 2樣例輸出

7【思路】

價值較小,所以針對價值 dpdp

dp,設d p[

i][j

]dp[i][j]

dp[i][

j]表示從前 i

ii 種物品選出總價值為 j

jj 的若干物品總重量的最小值 dp[

i][j

]=(j

>=v

[i])

dp[i][j]=\begin dp[i-1][j] \ (j=v[i]) \end

dp[i][

j]=(

j>=v

[i])

#includeusing namespace std;

const int inf=2e9;

const int maxn=10005;

int n,s,w;

int w[maxn],v[maxn];

int dp[maxn];

int main()

for(int j=s;j>=0;--j)

} }return 0;

}

NYOJ 860 又見01揹包

很經典的一道揹包題目,一般情況,我們都是把揹包的容量作為陣列的變數,但是這一道題,揹包容量資料量太大了。10 9 把容量和價值進行互換 include iostream include stdio.h include string include cstring include cmath incl...

nyoj860又見01揹包

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 有n個重量和價值分別為wi 和 vi 的 物品,從這些物品中選擇總重量不超過 w 的物品,求所有挑選方案中物品價值總和的最大值。1 n 100 1 wi 10 7 1 vi 100 1 w 10 9 輸入多組測試資料。每組測試資...

nyoj860 又見01揹包

題源 nyoj860 時間限制 1000 ms 記憶體限制 65535kb 難度 3 描述 有n個重量和價值分 別為wi 和 vi 的 物品,從這些物品中選擇總重量不超過 w 的物品,求所有挑選方案中物品價值總和的最大值。1 n 100 1 wi 10 7 1 vi 100 1 w 10 9 輸入多...