啊我还是太弱了居然要收录模板
1.各种简单背包
1 //01背包 2 int v[],w[],f[];//价值,重量,DP 3 for(int i=1;i<=n;i++) 4 { 5 for(int j=m;j>=0;j--) 6 { 7 if(j>=w[i]) 8 { 9 f[j]=max(f[j],f[j-w[i]]+v[i]); 10 } 11 } 12 } 13 14 //完全背包 15 int v[],w[],f[];//价值,重量,DP 16 for(int i=1;i<=n;i++) 17 { 18 for(int j=0;j<=m;j++) 19 { 20 if(j>=w[i]) 21 { 22 f[j]=max(f[j],f[j-w[i]]+v[i]); 23 } 24 } 25 } 26 27 //多重背包 28 int v[],w[],f[],t[],wl[],vl[]; //价值,重量,DP,数量,拆包后的重量与价值 29 int cnt=0; 30 for(int i=1;j<=n;i++) 31 { 32 int k=1; 33 while(t[i]>k) 34 { 35 t[i]-=k; 36 wl[++cnt]=k*w[i]; 37 vl[cnt]=k*v[i]; 38 k<<=1; 39 } 40 w[++cnt]=w[i]*t[i]; 41 v[cnt]=w[i]*t[i]; 42 } 43 for(int i=1;i<=cnt;i++) 44 { 45 for(int j=m;j>=0;j--) 46 { 47 if(j>=wl[i]) 48 { 49 f[j]=max(f[j],f[j-wl[i]]+vl[i]); 50 } 51 } 52 }