hdu1171 hdu2602 簡單01揹包

2021-08-22 16:39:30 字數 892 閱讀 9932

hdu1171

將總額的一半作為揹包容量,狀態方程s[j]=max(s[j],s[j-v[i]]+v[i]);

#include#include#includeusing namespace std;

int v[5000];

int s[250000];

int main(void)

}int max_=-1;

for(i=1;i=v[i];j--)

for(j=total/2;j>=v[i];j--)

if(s[j]>max_)

max_=s[j];

cout狀態方程:maxsum[j]=max(maxsum[j],maxsum[j-n[i]]+v[i]);

#include#include#includeusing namespace std;

int n[1000],v[1000];

int maxsum[1000000];

int main(void)

{ int m;

cin>>m;

while(m)

{memset(maxsum,0,sizeof(maxsum));

int n,v;

int i,j;

cin>>n>>v;

for(i=1;i<=n;i++)

cin>>v[i];

for(i=1;i<=n;i++)

cin>>n[i];

for(i=1;i<=n;i++)

for(j=v;j>=n[i];j--)

maxsum[j]=max(maxsum[j],maxsum[j-n[i]]+v[i]);

cout《體積和價值的輸入弄反了,還堅定地提交了很多次,堅定地一直wa......最後終於發現......

hdu1171解題報告

題意大概是 求把總價值分為兩個數,使這兩個數接近相等,而且這兩個數必須由所有裝置中的其中幾種裝置價值構成,並先輸出比較大的數,再輸出另乙個數。這是一道多重揹包的題目,雖然物體本身只有 這乙個屬性 但是可以把這一種屬性看做兩種屬性 折半之後,相當於有個屬性的限制了 本身當兩種屬性,其次多重揹包在空間和...

01揹包問題HDU2602

典型的01揹包問題,用動態規劃來解即可。用子問題定義狀態 即f i v 表示前i件物品恰放入乙個容量為v的揹包可以獲得的最大價值。則其狀態轉移方程便是 f i v max 這個方程非常重要 基本上所有跟揹包相關的問題的方程都是由它衍生出來的。所以有必要將它詳細解釋一下 將前i件物品放入容量為v的揹包...

hdu1171 多重揹包模板題

最近重新開始學dp,今天做到多重揹包這題,自己寫了乙個 感覺自己確實進步點了 嘻嘻。但是我沒看清題意n 0 退出迴圈,我wa 了無數次。下 面是自己寫的 include include include include include include include include include i...