博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2546 饭卡
阅读量:5092 次
发布时间:2019-06-13

本文共 1219 字,大约阅读时间需要 4 分钟。

            呆呆。                

                    饭卡

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12665    Accepted Submission(s): 4389

Problem Description
电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于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
 
#include
#include
#include
using namespace std;int f[1005];int main(){ int n,v[1005],m,i,j,mp,flag; while(~scanf("%d",&n)) { if(n==0) break; mp=0; memset(f,0,sizeof(f)); for(i=1;i<=n;i++) { scanf("%d",&v[i]); if(mp
=v[i];j--) { f[j]=max(f[j],f[j-v[i]]+v[i]); // printf("i=%d,j=%d\n",i,j); //printf("f=%d\n",f[j]); } } printf("%d\n",m-f[m-5]-mp); } return 0;}

 

 

转载于:https://www.cnblogs.com/cancangood/p/4168136.html

你可能感兴趣的文章
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
Mysql数据库备份和还原常用的命令
查看>>
经典入门_排序
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>
VIM工具
查看>>
javascript闭包
查看>>
创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备...
查看>>
mysql8.0.13下载与安装图文教程
查看>>
http://coolshell.cn/articles/10910.html
查看>>
[转]jsbsim基础概念
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
【3.1】Cookiecutter安装和使用
查看>>
【2.3】初始Django Shell
查看>>
Linux(Centos)之安装Redis及注意事项
查看>>
bzoj 1010: [HNOI2008]玩具装箱toy
查看>>