hdu1114 Piggy-Bank
来源:互联网 发布:数据分析相关分布 编辑:程序博客网 时间:2024/05/21 17:34
解题思路:完全背包
注意要初始 d[0] = 0
AC代码:
#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <algorithm>using namespace std;#define clr(p,v) memset(p,v,sizeof(p))const int maxn = 10010 ;int n, m, C;int d[maxn];void zeroOnePack(int cost, int weight){ for (int i=m; i>=cost; --i) d[i] = max(d[i], d[i-cost]+weight);}void completePack(int cost, int weight){ for (int i=cost; i<=m; ++i) d[i] = max(d[i], d[i-cost]+weight);}void multiPack(int cost, int weight, int amount){ if (cost*amount >= m) completePack(cost, weight); else { int num = 1; while (num <= amount) { zeroOnePack(num*cost, num*weight); amount -= num; num <<= 1; } zeroOnePack(amount*cost, amount*weight); }}int main(){ scanf("%d", &C); while (C--) { //Input && Calculate int tt; scanf("%d%d%d", &tt, &m, &n); m -= tt; //init d[] for (int i=1; i<=m; ++i) d[i] = -500000010; d[0] = 0; for (int i=1; i<=n; ++i) { int p, w; scanf("%d%d", &p, &w); completePack(w, -p); } //output if (-d[m] != 500000010 && d[m]) printf("The minimum amount of money in the piggy-bank is %d.\n", -d[m]); else puts("This is impossible."); } return 0;}
- HDU1114 Piggy-Bank
- Piggy-Bank HDU1114
- HDU1114--Piggy-Bank
- hdu1114 Piggy-Bank
- HDU1114 Piggy-Bank
- HDU1114:Piggy-Bank [POJ1384]
- HDU1114 Piggy-Bank
- HDU1114 Piggy-Bank
- HDU1114 & POJ1384 Piggy-Bank
- hdu1114 Piggy-Bank
- hdu1114 Piggy-Bank
- HDU1114&&POJ1384-Piggy-Bank
- hdu1114 Piggy-Bank
- Piggy-Bank||HDU1114
- hdu1114 Piggy-Bank 完全背包
- Piggy-Bank hdu1114 完全背包
- HDU1114——Piggy Bank
- hdu1114 Piggy-Bank (完全背包)
- 向正在运行的Linux应用程序注入代码
- android下的文件权限
- 《JavaScript语言精粹》--第4章:函数
- java的反射机制
- 最棒的10款MySQL GUI工具
- hdu1114 Piggy-Bank
- OC/STS/STM-1、3、12、48
- 一种以ID特征为依据的数据分片(Sharding)策略
- 移动互联改变了我们的生活
- 帧锁定算法解决游戏同步
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- 九度oj1051数字阶梯求和
- 程序员应该读的书
- 浏览器是如何上网的