NOIP 2006 tg T2金明的预算方案
来源:互联网 发布:gz网络语什么意思 编辑:程序博客网 时间:2024/04/29 12:14
http://www.luogu.org/problem/show?pid=1064#
麻烦一点的背包DP,其实还是01背包,因为只可能有0,1,2件附件,都比一比就行了。。。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int m,n,k,W,V,f[33000],w[100][10],v[100][10],p,num[100],id[100];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d%d%d",&W,&V,&p); if(p==0) { k++; w[k][0]=W; v[k][0]=V*W; id[i]=k; num[k]++; } else { w[id[p]][num[id[p]]]=W; v[id[p]][num[id[p]]]=V*W; num[id[p]]++; } } for(int i=1;i<=k;i++) { for(int j=n;j>=10;j-=10) { if(j-w[i][0]>=0) f[j]=max(f[j],f[j-w[i][0]]+v[i][0]); if(j-w[i][0]-w[i][1]>=0) 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]>=0) 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]>=0) 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]); } } printf("%d",f[n]); return 0;}
0 0
- NOIP 2006 tg T2金明的预算方案
- NOIP 2006 金明的预算方案
- noip 2006 金明的预算方案
- noip2006金明的预算方案 T2
- 金明的预算方案(NOIP)
- noip 金明的预算方案
- NOIP 金明的预算方案
- NOIP 2006 金明的预算方案|动态规划
- NOIP提高组2006 金明的预算方案
- 洛谷 P1064 [NOIP2006 T2] 金明的预算方案
- JZOJ1483、JZOJsenior1179.【NOIP提高组】金明的预算方案
- 【题解】NOIP普及组 金明的预算方案
- NOIP 2006 金明的预算
- NOIP 2006 金明的预算方案(带条件的01背包)
- Code Vs 1155 金明的预算方案&& 2006年NOIP全国联赛提高组
- 金明的预算方案 2006年NOIP全国联赛提高组
- SDNU 1179.金明的预算方案【NOIP 2006 提高组】【背包问题】【7月30】
- NOIP 2006 金明的预算方案 (裸?)分组背包
- 计算机牛人博客和代码汇总
- JAVA启动参数整理
- Linux内核中断和异常分析(中)
- 解决条目布局中imageview个数不确定
- C++高级进阶 第二季:mutable 关键字
- NOIP 2006 tg T2金明的预算方案
- 手机参数篇
- Redhat linux7.0 网卡的安装
- UINavigationController
- strcpy,sprintf,memcpy的区别
- Android开发中的一些不得不知的坑(一)
- static_cast、dynamic_cast、const_cast和reinterpret_cast总结
- Linux下解压命令大全
- Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程