51nod 1086
2016-01-24 17:22
190 查看
题意:
多重背包问题。
思路:
多重背包+二进制优化
AC代码:
多重背包问题。
思路:
多重背包+二进制优化
AC代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <queue> #include <stack> #include <vector> #include <set> #define INF 0x3f3f3f #define ll long long using namespace std; int T[20005]; int V[20005]; int dp[50005]; int main(){ int n,w; int a,b,c; int k; int cont=1; scanf("%d%d",&n,&w); for(int i=1; i<=n; i++){ scanf("%d%d%d",&a,&b,&c); if(c==1){ T[cont]=a; V[cont]=b; cont++; continue; } for(int k=1; k<=c; k*=2){ T[cont]=a*k; V[cont]=b*k; cont++; c=c-k; } if(c>0){ T[cont]=c*a; V[cont]=b*c; cont++; } } memset(dp,0,sizeof(dp)); for(int i=1; i<cont; i++){ for(int j=w; j>=T[i]; j--){ dp[j]=max(dp[j],dp[j-T[i]]+V[i]); } } printf("%d\n",dp[w]); return 0; }
相关文章推荐
- 【Usaco 2010 NOV Gold】奶牛的图片
- 最小公倍数问题 算法设计
- STM32的入侵检测是干什么用的
- vim插件管理器vundle
- eNSP 1.2.00.370 更新说明
- HDOJ 2040 亲和数
- 最佳浏览路线问题 算法设计
- 【JS复习笔记】07 复习感想
- 最大连续子序列(HDU_1231) 基础DP
- 正则表达式校验身份证号
- VirtualBox安装增强功能(Linux)
- 杨辉三角问题 算法编程
- VIM使用总结
- SlidingMenu开源库
- JavaEE Tutorials (19) - Web应用安全入门
- Android中View的事件分发机制
- C语言scanf函数详细解释
- 阶乘统计0个数 算法
- JavaEE Tutorials (18) - Java EE平台安全介绍
- cocos2d-x 3.2 之 2048 —— 第一篇