标签:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5410
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 5 int ma(int a,int b) 6 { 7 if (a>b) 8 return a; 9 else 10 return b; 11 } 12 int main() 13 { 14 int ans[12000],v,a[1100],b[1100],c[1100],n,m,T; 15 cin>>T; 16 while (T--) 17 { 18 cin>>v>>m; 19 for (int i=1;i<=m;i++) 20 cin>>c[i]>>a[i]>>b[i]; 21 memset(ans,0,sizeof(ans)); 22 for (int i=1;i<=m;i++)//处理第一阶段,0/1背包 23 { 24 for (int j=v;j>=c[i];j--) 25 { 26 ans[j]=ma(ans[j],ans[j-c[i]]+a[i]+b[i]); 27 } 28 } 29 for (int i=1;i<=m;i++)//处理第二阶段,完全背包。 30 { 31 for (int j=c[i];j<=v;j++) 32 { 33 ans[j]=ma(ans[j],ans[j-c[i]]+a[i]); 34 } 35 } 36 cout <<ans[v]<<endl; 37 } 38 return 0; 39 }
标签:
原文地址:http://www.cnblogs.com/arno-my-boke/p/4763998.html