Day9 - D - Piggy-Bank POJ - 1384
But there is a big problem with piggy-banks. It is not possible to determine how much money is inside. So we might break the pig into pieces only to find out that there is not enough money. Clearly, we want to avoid this unpleasant situation. The only possibility is to weigh the piggy-bank and try to guess how many coins are inside. Assume that we are able to determine the weight of the pig exactly and that we know the weights of all coins of a given currency. Then there is some minimum amount of money in the piggy-bank that we can guarantee. Your task is to find out this worst case and determine the minimum amount of cash inside the piggy-bank. We need your help. No more prematurely broken pigs!
Input
Output
Sample Input
3
10 110
2
1 1
30 50
10 110
2
1 1
50 30
1 6
2
10 3
20 4
Sample Output
The minimum amount of money in the piggy-bank is 60.
The minimum amount of money in the piggy-bank is 100.
This is impossible. 思路:完全背包问题,dp[i][j]表示前i种硬币,重量为j时达到的最小值,考虑最直观情况,dp[i][j]=min(dp[i-1][j-k*w]+k*c)(0<=k<=j/w),但此式在计算时有重复,例如在计算dp[i][j-w]时候,计算了dp[i-1][j-w-n*w]+n*c(1<=n<=(j/w)-1),也就是当1<=k时,以此类推,计算dp[i][j]时候就只需要算min(dp[i-1][j],dp[i][j-w])即可,相当于dp[i][j-w]已经把1<=k的答案算出来了,再用滚动数组优化即可
const int INF = 0x3f3f3f3f;
int dp[], w[], c[];
int main() {
ios::sync_with_stdio(false), cin.tie();
int T;
cin >> T;
while(T--) {
int E, F, V, N;
cin >> E >> F >> N;
V = F - E;
for(int i = ; i <= V; ++i) dp[i] = INF;
for(int i = ; i <= N; ++i) cin >> c[i] >> w[i];
for(int i = ; i <= N; ++i) {
for(int j = w[i]; j <= V; ++j)
dp[j] = min(dp[j], dp[j-w[i]]+c[i]);
}
if(dp[V] < INF) cout << "The minimum amount of money in the piggy-bank is " << dp[V] << ".\n";
else cout << "This is impossible.\n";
}
return ;
}
Day9 - D - Piggy-Bank POJ - 1384的更多相关文章
- poj 1384 Piggy-Bank(全然背包)
http://poj.org/problem?id=1384 Piggy-Bank Time Limit: 1000MS Memory Limit: 10000K Total Submissions: ...
- POJ 1384 POJ 1384 Piggy-Bank(全然背包)
链接:http://poj.org/problem?id=1384 Piggy-Bank Time Limit: 1000MS Memory Limit: 10000K Total Submissio ...
- POJ 1384 Piggy-Bank (ZOJ 2014 Piggy-Bank) 完全背包
POJ :http://poj.org/problem?id=1384 ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode ...
- POJ 1384 Intervals (区间差分约束,根据不等式建图,然后跑spfa)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1384 Intervals Time Limit: 10000/5000 MS (Java/Others ...
- poj 1384 Piggy-Bank(完全背包)
Piggy-Bank Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10830 Accepted: 5275 Descr ...
- POJ 1384
求猜存钱罐中至少有多少钱.容易知道金币总的重量,接着背包. #include<cstdio> #include<iostream> using namespace std; # ...
- POJ 1384 Piggy-Bank 背包DP
所谓的全然背包,就是说物品没有限制数量的. 怎么起个这么intimidating(吓人)的名字? 事实上和一般01背包没多少差别,只是数量能够无穷大,那么就能够利用一个物品累加到总容量结尾就能够了. ...
- poj 1384完全背包
题意:给出猪罐子的空质量和满质量,和n个硬币的价值和质量,求猪罐子刚好塞满的的最小价值. 思路:选择硬币,完全背包问题,塞满==初始化为无穷,求最小价值,min. 代码: #include<io ...
- ACM Piggy Bank
Problem Description Before ACM can do anything, a budget must be prepared and the necessary financia ...
随机推荐
- JavaSE复习~Java语言发展史
Java概述 什么是Java语言? Java语言是美国Sun公司(Stanford University NetWork),在1995年推出的高级编程语言. 所谓编程语言,是计算机的语言,人们可以使用 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 创建数组
import numpy as np x = np.empty([3,2], dtype = int) print (x) import numpy as np # 默认为浮点数 x = np.zer ...
- ASA-ACL类型
安全设备支持下面5种不同类型的ACl: 标准ACL 扩展ACL(可匹配v4&v6流量) EtherType ACL (以太网类型ACL) WebType ACL(Web类型ACL) 1.标准A ...
- From scratch 资源
neural-network-from-scratch:https://github.com/pangolulu/neural-network-from-scratch rnn-from-scratc ...
- [WC2018]通道(乱搞,迭代)
[洛谷题面]https://www.luogu.org/problemnew/show/P4221 这个题以及[CTSC2018 暴力写挂]都有类似的乱搞做法能通过考场数据. 具体搞法就是随一个起点, ...
- DC: 8-Write-up
下载地址:点我 哔哩哔哩:点我 信息收集 确定网段,找到虚拟机的IP,扫端口和服务. ➜ ~ nmap -sn 192.168.116.1/24 Starting Nmap 7.80 ( https: ...
- 【协作式原创】自己动手写docker之run代码解析
linux预备知识 urfave cli预备知识 准备工作 阿里云抢占式实例:centos7.4 每次实例释放后都要重新安装go wget https://dl.google.com/go/go1.1 ...
- 从零构建以太坊(Ethereum)智能合约到项目实战——学习笔记10
P57 .1-Solidity Types - 玩转 Solidity 数组 (Arrays) 学习目标 1.掌握Arrays的可变不可变的创建 2.深度理解可变数组和不可变数组之间的区别 3.二维数 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:使段落突出显示
<!DOCTYPE html> <html> <head> <title>菜鸟教程(runoob.com)</title> <meta ...
- Caffe2 手写字符识别(MNIST - Create a CNN from Scratch)[8]
本教程创建一个小的神经网络用于手写字符的识别.我们使用MNIST数据集进行训练和测试.这个数据集的训练集包含60000张来自500个人的手写字符的图像,测试集包含10000张独立于训练集的测试图像.你 ...