luogu 1064 金明的预算方案
Posted asdic
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu 1064 金明的预算方案相关的知识,希望对你有一定的参考价值。
01背包 变形,有主附件的背包内则更改决策
original: 1) 不选 2)选,f[j-w[i]]+v[i]
now : 1)不选 2)选主 3)主 附1 4)主 附2 5)主 附1 附2
遍历 i 时跳过附件即可
#include<iostream> using namespace std; int m,n,vv,pp,qq; int w[65][3],v[65][3],cnt[65]; int f[32500]; int main() { cin>>m>>n; for(int i=1;i<=n;i++){ cin>>vv>>pp>>qq; if(!qq){ w[i][0]=vv; v[i][0]=vv*pp; }else{ cnt[qq]++; w[qq][cnt[qq]]=vv; v[qq][cnt[qq]]=vv*pp; } } for(int i=1;i<=n;i++) for(int j=m;j>=w[i][0];j--){ f[j]=max(f[j],f[j-w[i][0]]+v[i][0]); if(j>=w[i][0]+w[i][1]) f[j]=max(f[j],f[j-w[i][0]-w[i][1]]+v[i][0]+v[i][1]); if(j>=w[i][0]+w[i][2]) f[j]=max(f[j],f[j-w[i][0]-w[i][2]]+v[i][0]+v[i][2]); if(j>=w[i][0]+w[i][1]+w[i][2]) f[j]=max(f[j],f[j-w[i][0]-w[i][1]-w[i][2]]+v[i][0]+v[i][1]+v[i][2]); } cout<<f[m]<<endl; return 0; }
以上是关于luogu 1064 金明的预算方案的主要内容,如果未能解决你的问题,请参考以下文章