HDU-2546饭卡(01背包)

news/2024/7/5 19:25:17

电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。
某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。
Input
多组数据。对于每组数据:
第一行为正整数n,表示菜的数量。n<=1000。
第二行包括n个正整数,表示每种菜的价格。价格不超过50。
第三行包括一个正整数m,表示卡上的余额。m<=1000。

n=0表示数据结束。
Output
对于每组输入,输出一行,包含一个整数,表示卡上可能的最小余额。
Sample Input
1
50
5
10
1 2 3 2 1 1 2 3 2 1
50
0
Sample Output
-45
32
解题思路:本题要求发卡余额最少,有n种菜,每种菜只能买一次,由此可以联想到01背包,要求余额最少可以现求出背包容量最大,然后拿总的减去最大也可以求最小,当然这道题除了要减去最大还要在最后减去价格最贵的那个,当剩余的钱只有5块时这时候购买最贵的会达到余额最小。
AC代码如下:

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
	int dp[2000],a[2000],i,j,n,m;
	while(scanf("%d",&n),n!=0)
	{
		memset(dp,0,sizeof(dp));
		for(i=1;i<=n;i++)
			scanf("%d",&a[i]);
		scanf("%d",&m);
		sort(a+1,a+n+1);
		if(m<5)
			printf("%d\n",m);
		else
		{
			for(i=1;i<=n-1;i++)//最贵的放在最后买,少一件物品
				for(j=m-5;j>=a[i];j--)//算出在去掉5块之后(保证在能购买的前提)所能消耗的最大的金额
					dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
			printf("%d\n",m-dp[m-5]-a[n]);//最后拿总的减去最大的就是所求最小
		}
		
	}
	return 0;
} 

http://www.niftyadmin.cn/n/709665.html

相关文章

兮米安装包制作工具v6.39

兮米安装包制作工具是一款专业的傻瓜式安装包制作软件&#xff0c;该软件拥有让初学者上手容易、制作的安装程序功能完善等优点&#xff0c;无需任何复杂的脚本操作&#xff0c;只需填写制作器中提供的安装包配置即可制作相应的安装包。、功能介绍1、安装包运行时加载开发者提供…

*寒假水31—— Fighting for HDU

在上一回&#xff0c;我们让你猜测海东集团用地的形状&#xff0c;你猜对了吗&#xff1f;不管结果如何&#xff0c;都没关系&#xff0c;下面我继续向大家讲解海东集团的发展情况&#xff1a; 在最初的两年里&#xff0c;HDU发展非常迅速&#xff0c;综合各种ACM算法生成的老…

ARM汇编指令的特点和速查表

ARM汇编指令的特点和速查表

POJ - 1321棋盘问题(DFS)

在一个给定形状的棋盘&#xff08;形状可能是不规则的&#xff09;上面摆放棋子&#xff0c;棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列&#xff0c;请编程求解对于给定形状和大小的棋盘&#xff0c;摆放k个棋子的所有可行的摆放方案C。 Input 输…

FragmentPagerAdapter与FragmentStatePagerAdapter区别

原博客地址: http://www.cnblogs.com/lianghui66/p/3607091.html 在一个 Android 应用中&#xff0c; 我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动。 不过我碰到了一个问题&#xff0c; 即当 Fragment 对应的数据集发生改变时&#xff0c; 我希望能够通过调…

HDU-2897邂逅明下(巴什博弈)

当日遇到月&#xff0c;于是有了明。当我遇到了你&#xff0c;便成了侣。 那天&#xff0c;日月相会&#xff0c;我见到了你。而且&#xff0c;大地失去了光辉&#xff0c;你我是否成侣&#xff1f;这注定是个凄美的故事。&#xff08;以上是废话&#xff09; 小t和所有世俗的人…

*寒假水32——悼念512汶川大地震遇难同胞——一定要记住我爱你

灾后的救援需要很多的人员&#xff0c;现在又刚刚到达一批志愿者&#xff0c;他们一共有n&#xff08;10<n<1000&#xff09;人&#xff0c;根据指挥部的指示&#xff0c;他们将被分为抢险、医疗以及通信等3个小分队&#xff0c;并且规定&#xff0c;抢险小分队需要占总人…

物联网、云计算、大数据、人工智能怎么区分,又有何关系?

物联网IoT(Internet of things)物联网是互联网的应用拓展&#xff0c;与其说物联网是网络&#xff0c;不如说物联网是业务和应用。因此&#xff0c;应用创新是物联网发展... 物联网IoT(Internet of things) 物联网是互联网的应用拓展&#xff0c;与其说物联网是网络&#xff0…