Piggy-Bank(背包)
Piggy-Bank
在 ACM 能够开展之前,必须准备预算,并获得必要的财力支持。该活动的主要收入来自于 Irreversibly Bound Money (IBM)。思路很简单。任何时候,某位 ACM 会员有少量的钱时,他将所有的硬币投入到小猪储钱罐中。这个过程不可逆,因为只有把小猪储钱罐打碎才能取出硬币。在足够长的时间之后,小猪储钱罐中有了足够的现金,用于支付 ACM 活动所需的花费。
但是,小猪储钱罐存在一个大的问题,即无法确定其中有多少钱。因此,我们可能在打碎小猪储钱罐之后,发现里面的钱不够。显然,我们希望避免这种不愉快的情况。唯一的可能是,称一下小猪储钱罐的重量,并尝试猜测里面的有多少硬币。假定我们能够精确判断小猪储钱罐的重量,并且我们也知道给定币种的所有硬币的重量。那么,我们可以保证小猪储钱罐中最少有多少钱。
你的任务是找出最差的情形,即判断小猪储钱罐中的硬币最少有多少钱。我们需要你的帮助。不能再贸然打碎小猪储钱罐了!
输入
输入包含 T 组测试数据。输入文件的第一行,给出了 T 的值。
对于每组测试数据,第一行包含 E 和 F 两个整数,它们表示空的小猪储钱罐的重量,以及装有硬币的小猪储钱罐的重量。两个重量的计量单位都是 g (克)。小猪储钱罐的重量不会超过 10 kg (千克),即 1 <= E <= F <= 10000 。每组测试数据的第二行,有一个整数 N (1 <= N <= 500),提供了给定币种的不同硬币有多少种。接下来的 N 行,每行指定一种硬币类型,每行包含两个整数 P 和 W (1 <= P <= 50000,1 <= W <=10000)。P 是硬币的金额 (货币计量单位);W 是它的重量,以 g (克) 为计量单位。
输出
对于每组测试数据,打印一行输出。每行必须包含句子 “The minimum amount of money in the piggy-bank is X.” 其中,X 表示对于给定总重量的硬币,所能得到的最少金额。如果无法恰好得到给定的重量,则打印一行 “This is impossible.” 。
示例输入
3
10 110
2
1 1
30 50
10 110
2
1 1
50 30
1 6
2
10 3
20 4
示例输出
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数组初始化成最大,然后每步求最小(因为最后的“.”又wa了。。。)
ac代码:
#include<iostream>
#include<algorithm>
#include<string.h>using namespace std;
long long int t,w[1000005],v[1000005],dp[1000005];
long long int n,m,k,l;
int main(){cin>>t;while(t--){cin>>n>>m;cin>>k;for(long long int i=0;i<k;i++){cin>>v[i]>>w[i];}m-=n;for(long long int i=0;i<=m;i++){dp[i]=0x3f3f3f3f;}dp[0]=0;for(long long int i=0;i<k;i++){for(long long int j=w[i];j<=m;j++){if(dp[j-w[i]]!=0x3f3f3f3f)dp[j]=min(dp[j],dp[j-w[i]]+v[i]);}}/*for(int i=0;i<=m;i++){cout<<dp[i]<<endl;}*/if(dp[m]==0x3f3f3f3f) cout<<"This is impossible."<<endl;else cout<<"The minimum amount of money in the piggy-bank is "<<dp[m]<<"."<<endl;}return 0;
}/*3
10 10
2
1 1
30 50
10 110
2
1 1
50 30
1 6
2
10 3
20 4*/
Piggy-Bank(背包)相关推荐
- piggy bank 完全背包
题目描述 Before ACM can do anything, a budget must be prepared and the necessary financial support obtai ...
- java实现动态规划算法解决存钱罐问题(piggy bank)
一.实验目的 练习使用动态规划算法解决实际问题(使用Java语言实现) 二.实验内容 [问题描述] 给定一个空存钱罐的重量和这个存钱罐最多能装进去的重量,现在需要在不打破这个存钱罐的情况下猜测里面最少 ...
- 循环 直到 python_如果您在Python中存在慢循环,则可以对其进行修复……直到无法解决为止...
循环 直到 python by Maxim Mamaev 马克西姆·马马耶夫(Maxim Mamaev) Let's take a computational problem as an exampl ...
- 这段时间做的简单dp题目(部分)
这些时间vj上做的部分题目 HDU5115 题意:第一行t,t组测试数据,每组数据第一行输入n表示n匹狼,第二行给出一个序列表示每匹狼的伤害,第三行给出每匹狼能给周围狼的伤害增幅,求怎样打可以得到最小 ...
- ImageNet1000分类,英文原版,中文翻译版
在训练模型时,可以用imagenet中的图片进行分类学习,imagenet中分类介绍 一.官网网址 imagenet官网网址 1-398:动物 399-924:物品 925-1000:食物 二.官方英 ...
- 独家 | 人工神经网络中发现了人类大脑拥有的多模态神经元(附链接)
作者:Gabriel Goh, Chelsea Voss, Daniela Amodei, Shan Carter, Michael Petrov, Justin Jay Wang, Nick Cam ...
- 一步步学习如何安装并使用SAP HANA Express Edition
使用Jerry这篇文章在Google Cloud platform上的Kubernetes集群部署HANA Express里介绍的方法在Google Cloud Platform的Kubernetes ...
- TensorFlow神经网络(九)VGG net论文阅读笔记
[注]内容来自MOOC人工智能实践TensorFlow笔记课程第8讲 来源:2015 ICLR 用于图像分类的文章: Very Deep Convolutional Networks for Larg ...
- ValueError: You are trying to load a weight file containing 0 layers into a model with 16 layers.
ValueError: You are trying to load a weight file containing 0 layers into a model with 16 layers. 在使 ...
- imagenet数据集类别标签和对应的英文中文对照表
预测结果输出one-hot类型,最大概率的下标即为对于类别号 0: 'tench, Tinca tinca', 丁鲷(鱼) 1: 'gold ...
最新文章
- 电子合同的履行_什么是电子合同履行?怎么履行电子合同?
- java 随机数 【指定范围】
- 物联网卡加持智能电网,发展更具优势
- HDU - 6278 Just $h$-index主席树+二分
- 使用jieba和wordcloud进行中文分词并生成《悲伤逆流成河》词云
- 高性能HTTP加速器Varnish(管理维护篇)
- shell脚本之从1加到100之和的思路
- centos 5.6安装nginx+mysql+php(php-fpm)+phpmyadmin总结
- re.split() 根据句子中的序号进行切分
- 【TDA4系列】向 PSDKRA 添加新的图像传感器
- 自然数简化到素数:黎曼猜想RiemannHypothesis及其解释(公号回复“黎曼猜想”下载PDF经典收藏版彩标资料)
- visual studio 2010和注册码
- 数据可视化—随机漫步
- UTF-8编码占几个字节?
- 白平衡算法---色温曲线
- Arch Linux上使用 pandoc 将 markdown 转为 pdf 以及如何查看本机的中文字体 fc-list :lang=zh
- HTML5与视频传输
- 4.1 什么是脚手架(CLI)
- Centos7 安装CUPS (安装斑马ZP450打印机驱动)
- 工作中收集的一些捷径网站