多重背包 HDU2191
2015-07-22 23:27
260 查看
#include <iostream> #include <cstring> using namespace std; int v[2010]; int w[2010]; long long int dp[400010]; int main() { int T; cin>>T; while(T--) { int n,m; cin>>n>>m; int p,h,c; int num=0; for(int i=0;i<m;i++) { cin>>p>>h>>c; for(int t=0;t<c;t++) { w[num]=p; v[num]=h; num++; } } memset(dp,0,sizeof(dp)); for(int i=0;i<num;i++) { for(int j=n;j>=w[i];j--) { dp[j]=max(dp[j],dp[j-w[i]]+v[i]); } } cout<<dp <<endl; } return 0; }
相关文章推荐
- Tr A
- Shell练习-计算一下所有进程所占用内存大小的和
- 互联网营销、高管创业、一夜成名,“小米式”创业能改变世界?
- C语言声明一览
- 各种极致的树莓派玩法
- QGraphicsView 重写drawBackGround刷新问题
- Linux与Windows的不同
- CSS清除浮动大全共8种方法
- 在项目中使用TypeScript
- 页式系统中的页面和段式系统中的分段有什么区别?
- java:ArrayList集合与HashSet集合元素重复性探讨
- 2014-07-22日总结
- Linked List Cycle
- bzoj4143
- C++初始化成员列表,符合类,const修饰函数
- 用链表创建栈 以及用数组创建栈的区别
- NSString写入文件和导出文件
- LRU Cache
- java中时分秒的取得与转换
- [c]HDOJ1874 Dijkstra算法求最短路径