zoukankan      html  css  js  c++  java
  • 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数组,使每个元素都最大。然后是类似与完全背包,dp数组存放最小金额,如果可以满足条件,dp[m]的值应小于无穷大,反之,相等。

    Code:

    #include<iostream>
    #include<cstring>
    using namespace std;
    int n,m;
    int w[555],p[555];
    int dp[10005];
    int INF=0x3f3f3f3f;
    int main(){
    	int t;
    	cin>>t;
    	while(t--){
    		memset(dp,INF,sizeof(dp));
    		int e,f;
    		cin>>e>>f;
    		m=f-e;
    		cin>>n;
    		dp[0]=0;
    		for(int i=0;i<n;i++) cin>>p[i]>>w[i];
    		for(int i=0;i<n;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("This is impossible.
    ");
    		else {
    			printf("The minimum amount of money in the piggy-bank is %d.
    ",dp[m]);
    		}
    	}
    	
    	return 0;
    }
    }
    
    七月在野,八月在宇,九月在户,十月蟋蟀入我床下
  • 相关阅读:
    Fidder4 顶部提示 “The system proxy was changed,click to reenable fiddler capture”。
    redis 哨兵 sentinel master slave 连接建立过程
    虚拟点赞浏览功能的大数据量测试
    python基础练习题(题目 字母识词)
    python基础练习题(题目 回文数)
    python基础练习题(题目 递归求等差数列)
    python基础练习题(题目 递归输出)
    python基础练习题(题目 递归求阶乘)
    python基础练习题(题目 阶乘求和)
    python基础练习题(题目 斐波那契数列II)
  • 原文地址:https://www.cnblogs.com/voids5/p/12695039.html
Copyright © 2011-2022 走看看