poj 2755 神奇的口袋 dp

2021-07-12 01:17:11 字數 786 閱讀 5127

poj 2755 神奇的口袋(dp)

總時間限制: 10000ms 記憶體限制: 65536kb

描述 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2……an。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是,john有多少種不同的選擇物品的方式。

輸入 輸入的第一行是正整數n (1 <= n <= 20),表示不同的物品的數目。接下來的n行,每行有乙個1到40之間的正整數,分別給出a1,a2……an的值。

輸出 輸出不同的選擇物品的方式的數目。

樣例輸入

3 20

20 20

樣例輸出

3簡單dp,容易寫出遞推方程式為 f[i][j]=f[i][j-1]+f[i-v[j]][j-1],其中v[j]為物品j的價值。

另外注意到這個dp事實上可以利用掃瞄單調性不斷更新f的一維即可,不必把f變成二維的,所以本題幾乎與0/1揹包類似。

accepted    260kb   0ms 361 b   g++
#include

long

long

int f[41][21];

int n,v[21];

int main()

printf("%lld\n",f[40][n]);

return

0;}

2755 神奇的口袋

2755 神奇的口袋 檢視提交統計提示提問 總時間限制 10000ms 記憶體限制 65536kb 描述有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選擇一些,...

百練2755 神奇的口袋 DP

2755 神奇的口袋 檢視 提交 統計 提示 提問 總時間限制 10000ms 記憶體限制 65536kb 描述有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a1,a2 an。john可以從這些物品中選...

百練 2755 神奇的口袋 dp揹包

描述 有乙個神奇的口袋,總的容積是40,用這個口袋可以變出一些物品,這些物品的總體積必須是40。john現在有n個想要得到的物品,每個物品的體積分別是a 1,a2 a n。john可以從這些物品中選擇一些,如果選出的物體的總體積是40,那麼利用這個神奇的口袋,john就可以得到這些物品。現在的問題是...