题意

给我们一个容器的容量m n个物品 每个物品有不同的花费和价值 问我们再每个物品无限个的情况下 最后正好装满最后得到的最小价值是多少 如果装不满 就输出impossible

分析

目标状态:最小价值策略
限制条件:正好装满m的容量
多重背包模型
每个物品可以选择无限个 但是又要求恰好装满
满足最小价值策略我们应该取min 所以应把结果数组初始化无穷大 不然无法选出最小值
遵循递推式为dp[i] = min(dp[i],dp[i-cost[x]]+value[x]的选择策略
但是设置inf后发现我们每次操作的元素都是inf 其中最小的元素也就是inf无法得到正解
所以把dp[0]初始化为0,其他位置inf
因为只有把dp[0]初始化为0
我们在递推式中不断选择物品才能将dp数组更新 不然永远为inf
最后如果能装到m的位置m必然不等于inf
而且会不断取最小
都是从dp[0] = 0扩展出来的
所以为了最小策略我们需要不断取最小

code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int w[510],p[510];
typedef long long ll;
const ll inf = (1<<31)-1;
ll dp[10010];int main()
{
//  cout<<inf<<endl; int t;scanf("%d",&t);while(t--){int e,f;scanf("%d%d",&e,&f);int m  = f-e;int q;scanf("%d",&q);for(int i=1;i<=q;i++)scanf("%d%d",&p[i],&w[i]);for(int i=1;i<=m;i++)dp[i] = inf;dp[0]=0;for(int i=1;i<=q;i++){for(int j=w[i];j<=m;j++){dp[j]  = min(dp[j],dp[j-w[i]]+p[i]);}}if(dp[m]!=inf)printf("The minimum amount of money in the piggy-bank is %d.\n",dp[m]);else printf("This is impossible.\n");memset(dp,0,sizeof(dp));}return 0;
}

POJ-1384 Piggy-Bank 多重背包变形相关推荐

  1. POJ 2392 Space Elevator(多重背包变形)

    Q: 额外添加了最大高度限制, 需要根据 alt 对数据进行预处理么? A: 是的, 需要根据 alt 对数组排序 Description The cows are going to space! T ...

  2. POJ 1014 Dividing(多重背包 + 倍增优化)

    题意: 求一种划分方案使结果最公平. 思路: 多重背包,然后把物品分为 2^0, 2^1, ... , 2^k,... 等. #include <iostream> #include &l ...

  3. POJ 1014 Dividing【多重背包+二进制优化】

    大意: 价值1, 2, 3, --, 6的物品分别a1, a2, --, a5, a6件 问能否把这些物品分成两份,使其具有相同的价值(所有物品必须全部用上) 分析: 给个物品有多件,即多重背包 只要 ...

  4. poj 2063 Investment(01背包变形)

    http://poj.org/gotoproblem?pid=2063 (1)上限 m 一直上升的 n 次01背包问题,比一般的01背包多了一重循环: (2)本题出现了各种错误:1)刚开始,没注意 m ...

  5. poj 1252 Euro Efficiency (01背包变形)

    http://poj.org/gotoproblem?pid=1252 (1)不是单纯的01背包问题,硬币有去有回(即有正有负),这使得用想买你的解法,上限难以确定,所以我开了dp[10000]的数组 ...

  6. piggy bank 完全背包

    题目描述 Before ACM can do anything, a budget must be prepared and the necessary financial support obtai ...

  7. 动态规划 背包问题小结 0-1背包(采药 九度第101题) 完全背包(Piggy-Bank POJ 1384) 多重背包(珍惜现在,感恩生活 九度第103题)

    本小结介绍0-1背包.完全背包以及多重背包问题 记忆要点: 0-1背包:二维数组情况下,顺序遍历体积或者倒序均可以                降维情况下需倒序遍历体积 完全背包:数组降维+顺序遍历 ...

  8. POJ 1742 Coins ( 经典多重部分和问题 DP || 多重背包 )

    题意 : 有 n 种面额的硬币,给出各种面额硬币的数量和和面额数,求最多能搭配出几种不超过 m 的金额? 分析 : 这题可用多重背包来解,但这里不讨论这种做法. 如果之前有接触过背包DP的可以自然想到 ...

  9. (多重背包+记录路径)Charlie's Change (poj 1787)

    http://poj.org/problem?id=1787   描述 Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie dri ...

最新文章

  1. 大数据独角兽TOP10榜单发布,“内永洪,外Tableau”领跑BI领域
  2. windows下用pycharm安装tensorflow简易教程
  3. 函数return,有些地方你可能还没掌握
  4. 信号的基本概念以及信号的产生
  5. 自动提示_EXCEL2013版突然打不开,自动修复提示1907错误
  6. js关闭setInterval及终止ajax请求
  7. 第二:RobotFrameWork接口用例设计规范
  8. c51转汇编语言窗口,在C51语言中如何嵌入汇编语言
  9. 3 年后端、4 年前端,聊聊用户认证鉴权
  10. camunda流程定义表无数据_【经验】数据可视化分析操作指南
  11. 磁盘转换:电脑动态盘转换基本盘怎么操作?
  12. Android Studio创建AVD教程
  13. i春秋web-Backdoor(.git泄露、vim备份泄露、代码审计)
  14. jmeter性能测试之分布式
  15. 如何使用python获取Windows 10精美的桌面壁纸
  16. Chrome | BookMarks
  17. 不用找,你想要的酒店餐饮su模型素材都在这里
  18. python画图大全_python画图教程
  19. 35美元与35万美元
  20. LATEX编辑高数基础公式

热门文章

  1. Python:IndentationError: unexpected indent
  2. Mapreduce执行过程分析(基于Hadoop2.4)——(一)
  3. oracle调整Lock_sga参数而不使用虚拟内存
  4. 5、jeecg 笔记之 minidao 条件判断
  5. Alibaba Druid连接池接入
  6. web编程 模块1 html,PYcore python programming笔记C20 Web编程
  7. postgresql查询mysql库_postgresql 查看数据库,表,索引,表空间以及大小
  8. mysql5.7.11 创建用户_修改更新查找MySQL5.7.x的root用户的默认密码
  9. 消息长度_填坑笔记:RocketMQ消息订阅失败问题?
  10. 数据结构与算法实战-C++实现