HDU 1114 Piggy-Bank 全然背包[通俗易懂]

HDU 1114 Piggy-Bank 全然背包

大家好,又见面了,我是全栈君。

Piggy-Bank

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Description

Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM). The idea behind is simple. Whenever some ACM member has any small money, he takes all the coins and throws them into a piggy-bank. You know that this process is irreversible, the coins cannot be removed without breaking the pig. After a sufficiently long time, there should be enough cash in the piggy-bank to pay everything that needs to be paid. 

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

The input consists of T test cases. The number of them (T) is given on the first line of the input file. Each test case begins with a line containing two integers E and F. They indicate the weight of an empty pig and of the pig filled with coins. Both weights are given in grams. No pig will weigh more than 10 kg, that means 1 <= E <= F <= 10000. On the second line of each test case, there is an integer number N (1 <= N <= 500) that gives the number of various coins used in the given currency. Following this are exactly N lines, each specifying one coin type. These lines contain two integers each, Pand W (1 <= P <= 50000, 1 <= W <=10000). P is the value of the coin in monetary units, W is it’s weight in grams. 

 

Output

Print exactly one line of output for each test case. The line must contain the sentence “The minimum amount of money in the piggy-bank is X.” where X is the minimum amount of money that can be achieved using coins with the given total weight. If the weight cannot be reached exactly, print a line “This is impossible.”. 

 

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.

 

全然背包的基础题

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
const int INF = 1e7;
using namespace std;
int dp[1000005],v[600],p[600];
int max(int x,int y)
{
    if(x > y)
        return x;
        else
    return y;
}
int min(int x,int y)
{
    if(x > y)
        return y;
        else
    return x;
}
int main()
{
   int T,VM,Vz,n;
   scanf("%d",&T);
   while(T--)
   {
       scanf("%d%d",&Vz,&VM);
       scanf("%d",&n);
       int st = VM - Vz;
       for(int i = 0;i<=st;i++)
        dp[i] = INF;
        dp[0] = 0;
       for(int i = 1;i<=n;i++) scanf("%d%d",&p[i],&v[i]);
       for(int i = 1;i<=n;i++)
       {
           for(int j = v[i];j<=st;j++)
           {
               dp[j] = min(dp[j-v[i]]+p[i],dp[j]);
           }
       }
       if(dp[st]>=INF)
        puts("This is impossible.");
        else
       printf("The minimum amount of money in the piggy-bank is %d.\n",dp[st]);

    }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116618.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Windows下如何强制删除文件夹及文件的命令「建议收藏」

    Windows下如何强制删除文件夹及文件的命令「建议收藏」点击Win输入cmd以管理员身份打开输入命令:rd/s/q盘符:\某个文件夹(强制删除文件文件夹和文件夹内所有文件)例如rd/s/qF:\AdobePhotoshop\AdobePhotoshopCS6del/f/s/q盘符:\文件名(强制删除文件,文件名必须加文件后缀名)例如del/f/s/qF:\护眼精灵\huyanjingling.rarhttps://blog.csdn.net/hanhanwanghaha欢迎关注这个超级无敌可爱的人鸭,有什么问

    2022年6月10日
    355
  • CString::ReverseFind()和CString::Find()区别「建议收藏」

    CString::ReverseFind()和CString::Find()区别「建议收藏」Find()是从左往右查找;ReverseFind()是从右边往左查找,但是他们返回的地址都是从左往右数的。示例:[cpp]#include“stdafx.h”#include”afx.h”intmain(intargc,char*argv){CStringstr=”abcdabcd”;inta=str.Find(‘b’);printf(“

    2022年6月16日
    28
  • 8psk带宽计算_采用8PSK系统传输4800bps数据。 (1)信道带宽的最小理论值是多少? mpsk 信号可以采用差…

    8psk带宽计算_采用8PSK系统传输4800bps数据。 (1)信道带宽的最小理论值是多少? mpsk 信号可以采用差…码元速率为boud=4800/log8=1600Boud/s最小带宽为boud/2=1600/2=800HZ带宽不变,信息加倍,可以采用每个码元所含信息量为4bit的调制方式,如采用16QAM调制。带宽不变的情况下,信息速率增大,误码率相同的情况下,要增加信号的发送功率。给分吧,谢谢如同模拟调制,数字调制也可分为频率调制、相位调制和幅度调制,性能各有千秋。由于频率、相位调制对噪声抑制更好,因此成为…

    2022年10月10日
    0
  • 导入导出封装的工具类 (一) 利用POI封装

    导入导出封装的工具类 (一) 利用POI封装

    2021年11月24日
    39
  • Eclipse开发JavaWeb项目配置Tomcat,详细教程

    Eclipse开发JavaWeb项目配置Tomcat,详细教程以下都经过本人自学时一一自己动手配置实验。首先介绍eclipse开发JavaWeb项目需要配置的相关环境,使用tomcat软件在本地搭建服务器,然后再在eclipse环境下配置tomcat:第一步:使用tomcat软件在本地搭建服务器,这个本地的tomcat服务器与eclipse环境下配置tomcat服务器都可以使用,但是只能启动一个,否则会报端口冲突,到时安装好环境会介绍tomcat

    2022年9月6日
    3
  • cmd进入mysql的方法

    cmd进入mysql的方法1.cmd下找到mysql的安装目录下的bin文件夹(可以直接在windows的bin文件夹下敲入cmd回车) 例如:E:\ProgramFiles(x86)\Wamp\bin\mysql\mysql5.5.202.运行mysql.exe或者mysql-hlocalhost-uroot-p3.输入root用户密码

    2022年6月8日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号