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...