01揹包變化2

2021-07-22 08:52:51 字數 638 閱讀 7748

題目:poj2184

題意:給出num(num<=100)頭奶牛的s和f值(-1000<=s,f<=1000),要求在這幾頭奶牛中選出若干頭,使得在其總s值ts和總f值tf均不為負的前提下,求最大的ts+tf值。

解答:把前面那個變數看成揹包的容量。後面的值看成揹包的價值。由於揹包的容量可能為負值,因此需要將其向右平移100000個單位。

#include#include#include#includeusing namespace std;

const int inf = 0x3f3f3f3f;

const int maxn = 110;

int value[maxn];

int weight[maxn];

int dp[200001];

int main()

else

}int ans = 0;

for(int i = 100000;i <= 200000;i++)///

if(dp[i]-100000+i>ans && dp[i] >= 0)///

ans = dp[i]-100000+i;

printf("%d\n",ans);

}return 0;

}

01揹包問題2

有n個重量和價值分別為wi,vi的物品。從這些物品中挑選總重量不超過w的物品,求所有挑選方案中價值總和最大的方案 輸入樣例4 5 2 1 3 2 3 2 4 2 輸出樣例取值範圍1 n 100 1 wi 10 7 1 vi 100 1 w 10 9 分析 這裡與揹包問題1不同的地方是修改了限制的條件...

揹包 01揹包

01揹包 有n種物品與承重為m的揹包。每種物品只有一件,每個物品都有對應的重量weight i 與價值value i 求解如何裝包使得價值最大。dp i,v 表示前i個物體 包括第i個 面對容量為v的揹包的最大價值,c i 代表物體i的重量,w i 代表物體i的價值 如果第i個物體不放入揹包,則揹包...

揹包專題 01揹包

暑假集訓開始了,按照隊裡的分配,我是弄dp的,嘛,於是我又一次的開始了從01揹包開始學習,昨天將杭電的幾道01揹包重新做了一遍,下面講講我自己對於01揹包的理解。首先01揹包題目的雛形是 有n件物品和乙個容量為v的揹包。第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使價值總和最大。...