标签:iam std wrap 等级 ide efault include pad else
http://codevs.cn/problem/3269/
#include <cstdio> #include <cstring> #include <iostream> using namespace std; int V,n; int w[210],v[210],m[210]; int f[200010]; int main() { scanf("%d%d",&n,&V); for(int i=1;i<=n;i++) scanf("%d%d%d",&w[i],&v[i],&m[i]); for(int i=1;i<=n;i++) { if(m[i]==-1)//完全背包 for(int j=w[i];j<=V;j++) f[j]=max(f[j],f[j-w[i]]+v[i]); else//01与多重背包 { int x=m[i]; for(int k=1;k<=x;k<<=1) { for(int j=V;j>=w[i]*k;j--) f[j]=max(f[j],f[j-w[i]*k]+v[i]*k); x-=k; } if(x) for(int j=V;j>=w[i]*x;j--) f[j]=max(f[j],f[j-w[i]*x]+v[i]*x); } } cout<<f[V]; return 0; }
标签:iam std wrap 等级 ide efault include pad else
原文地址:http://www.cnblogs.com/xiaoningmeng/p/6068741.html