hdu2191
来源:互联网 发布:梅西生涯数据 编辑:程序博客网 时间:2024/04/29 12:29
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>using namespace std;int dp[1100];int m,n;struct node{ int p; int w; int num;};node s[110];//01背包void zeroOne(int cost,int value){ for(int i=m;i>=cost;i--) dp[i]=max(dp[i],dp[i-cost]+value);}//完全背包void complete(int cost,int value){ for(int i=cost;i<=m;i++) dp[i]=max(dp[i],dp[i-cost]+value);}//多重背包void multi(int cost,int value,int amount){ int k=1; if(cost*amount>=m) complete(cost,value); else { while(amount>=k) { zeroOne(k*cost,k*value); amount-=k; k*=2; } zeroOne(amount*cost,amount*value); }}void Dp(){ for(int i=1;i<=n;i++) { multi(s[i].p,s[i].w,s[i].num); }}int main(){ int T; int i,j,k1; cin>>T; for(k1=0;k1<T;k1++) { memset(dp,0,sizeof(dp)); cin>>m>>n; for(i=1;i<=n;i++) cin>>s[i].p>>s[i].w>>s[i].num; Dp(); cout<<dp[m]<<endl; } return 0;}
多重背包问题
参考网址:http://blog.sina.com.cn/s/blog_6ad683a10100uvwi.html
模板代码:
- hdu2191
- hdu2191
- HDU2191
- hdu2191
- hdu2191
- hdu2191
- HDU2191
- hdu2191(多重背包)
- hdu2191(多重背包)
- hdu2191多重背包
- hdu2191-悼念512
- HDU2191多重背包问题
- hdu2191(多重背包)
- HDU2191多重背包
- hdu2191 多重背包
- hdu2191(多重背包)
- hdu2191 多重背包问题
- DP--多重背包--HDU2191
- Qt creator 2.7.1安装及VS 2010 +Qt 4.8.4配置
- Android开发之Camera(三)
- POJ 3714 Raid(平面最近点对,不同类型点之间)
- 有关NSMutableSet与NSMutableArray的一些细节
- 什么是TTL电平、CMOS电平、RS232电平?
- hdu2191
- 黑马程序员--03.面向对象--03.子类父类方法重写和覆盖的理解【个人总结】
- bitcloud api
- Android实现系统联系人字符分组以及字母表导航效果 .
- 常用运放介绍
- Servlet 实现文件的上传与下载
- 桌面神器:电子钟和磁悬浮合体!
- C++中的输入输出(一)
- Response.Redirect在新窗口打开