博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hihoCoder1353 满减优惠
阅读量:6441 次
发布时间:2019-06-23

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

#1353 : 满减优惠

时间限制:
10000ms
单点时限:
1000ms
内存限制:
256MB

描述

最近天气炎热,小Ho天天宅在家里叫外卖。他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元。并且如果消费总计满X元,还能享受优惠。小Ho是一个不薅羊毛不舒服斯基的人,他希望选择若干道不同的菜品,使得总价在不低于X元的同时尽量低。

你能算出这一餐小Ho最少消费多少元吗?

输入

第一行包含两个整数N和X,(1 <= N <= 20, 1 <= X <= 100)

第二行包含N个整数A1, A2, ..., AN。(1 <= Ai <= 100)

输出

输出最少的消费。如果小Ho把N道菜都买了还不能达到X元的优惠标准,输出-1。

样例输入
10 509 9 9 9 9 9 9 9 9 8
样例输出
53 分析:01背包。把所有菜价格的总和sum跟X的差值d 作为背包容量,然后把结果无限接近d。
#include
#include
using namespace std;int dp[3000],a[300]; int main(){ int N,X,sum=0; scanf("%d%d",&N,&X); for(int i=1;i<=N;i++) {scanf("%d",&a[i]);sum+=a[i];} int d=sum-X; if(d<0) printf("-1\n"); else if(d==0) printf("%d\n",sum); else//差值d为背包 { for(int i=1;i<=N;i++) { for(int j=d;j>=a[i];j--) if(dp[j-a[i]]+a[i]<=d) dp[j]=max(dp[j],dp[j-a[i]]+a[i]); } int ans=0; for(int i=0;i<=d;i++) ans=max(dp[i],ans); printf("%d\n",sum-ans); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/ACRykl/p/8215642.html

你可能感兴趣的文章
企业运维笔试考题(1)
查看>>
Mysql修改存储过程相关权限问题
查看>>
4.2权限管理
查看>>
彻底理解ThreadLocal
查看>>
Node.js~ioredis处理耗时请求时连接数瀑增
查看>>
企业如何走出自己的CRM非常之道?
查看>>
整合看点: DellEMC的HCI市场如何来看?
查看>>
联合国隐私监督机构:大规模信息监控并非行之有效
查看>>
韩国研制出世界最薄光伏电池:厚度仅为人类头发直径百分之一
查看>>
惠普再“卖身”,软件业务卖给了这家鼻祖级公司
查看>>
软件定义存储的定制化怎么走?
查看>>
“上升”华为碰撞“下降”联想
查看>>
如何基于Spark进行用户画像?
查看>>
光伏发电对系统冲击大 “十三五”电力规划重点增强调峰能力
查看>>
全球19家值得关注的物联网安全初创企业
查看>>
Android下的junit 单元测试
查看>>
这几个在搞低功耗广域网的,才是物联网的黑马
查看>>
主流or消亡?2016年大数据发展将何去何从
查看>>
《大数据分析原理与实践》一一第3章 关联分析模型
查看>>
《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程
查看>>