HDU 2192 悼念512..(多重背包)
2015-08-26 15:10
330 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2191
直接是模板题啊Orz…
题意是中文不再赘述。
贴个模板防止以后人老眼花记忆力差又忘了怎么写了!!!
直接是模板题啊Orz…
题意是中文不再赘述。
贴个模板防止以后人老眼花记忆力差又忘了怎么写了!!!
[code]#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct Node { int v,w,c; }arr[200]; int dp[3000]; int n,m; int main() { int T; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d%d",&arr[i].v,&arr[i].w,&arr[i].c); memset(dp,0,sizeof(dp)); for(int i=1;i<=m;i++) { if(arr[i].v*arr[i].c>=n)//该物品是符合完全背包的性质 { for(int j=arr[i].v;j<=n;j++) { dp[j] = max(dp[j],dp[j-arr[i].v] + arr[i].w); } } else//否则转化成01背包求解,因为k的范围很小,不需要用到二进制拆分物品,直接枚举即可 { for(int j=n;j>=arr[i].v;j--) { for(int k=1;k<=arr[i].c && j-k*arr[i].v>=0;k++)//哦对了这个地方忘记判断j-k*arr[i].v了wa了好多发,要注意啊, { dp[j] = max(dp[j],dp[j-k*arr[i].v] + k*arr[i].w); } } } } printf("%d\n",dp ); } return 0; }
相关文章推荐
- NPOI Excel 单元格背景颜色对照表
- 【原+转】创建CocoaPods私有podspec
- 阿里社招B2B
- 深入浅出CChart 每日一课——快乐高四第十课 见微知著,CChart内置功能介绍之数据处理篇
- Win10 Mobile/PC版《Office》等大波应用再次更新以及更新下载
- hdu 3746 KMP next数组的应用
- hdoj 2824 The Euler function
- Volley源码解析
- ThinkPHP3.2判断是否为手机端访问并跳转到另一个模块的方法
- 记录数据库执行情况来分析数据库查询性能问题
- python列出文件夹下的所有文件
- 我的openwrt学习笔记(十七):openwrt uboot.bin导出
- 关于大型网站技术演进的思考(二)--存储的瓶颈(2)
- Linux中的那些英文缩写和她的含义们
- Android程序员 ios开发之旅之遇见雨燕
- 某公司网络搭建项目实战
- SQL中Group By的使用
- SDUT2622--图结构练习——最小生成树
- SwipeRefreshLayout增加底部加载
- hive编程指南笔记--2基础操作