博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ-2546 饭卡【DP】【01背包】
阅读量:7043 次
发布时间:2019-06-28

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

饭卡

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 26586    Accepted Submission(s): 9293

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
 
 
Accepted Code:
#include 
#include
#include
using namespace std;int dp[1001][1001];int main() { int n, c[1001], val; while (cin >> n && n) { for (int i = 1; i <= n; ++i) cin >> c[i]; cin >> val; if (val < 5) { cout << val << endl; continue; } sort(c + 1, c + 1 + n); val -= 5; memset(dp, 0, sizeof(dp)); //01背包 for (int i = 1; i < n; ++i) { // 外层维护物品 for (int j = 0; j <= val; ++j) // 内层维护价值(从0->手里拥有的钱) dp[i + 1][j] = j < c[i] ? dp[i][j] : max(dp[i][j], dp[i][j - c[i]] + c[i]); } cout << val - dp[n][val] - c[n] + 5 << endl; } return 0;}

 

 

转载于:https://www.cnblogs.com/ray-coding-in-rays/p/6517827.html

你可能感兴趣的文章
Batch normalization:accelerating deep network training by reducing internal covariate shift的笔记
查看>>
Nginx/LVS/HAProxy负载均衡软件的优缺点详解
查看>>
Java -Xms -Xmx -Xss -XX:MaxNewSize -XX:MaxPermSize含义记录
查看>>
微信小程序开发之常见BUG
查看>>
汇编指令-MRS(读)和MSR(写)指令操作CPSR寄存器和SPSR寄存器使用(1)
查看>>
Instagram的Material Design概念设计文章分享
查看>>
Jersey VS Django-Rest
查看>>
安装 openCV 2.4.10
查看>>
去哪网实习总结:用到的easyui组件总结(JavaWeb)
查看>>
spring-oauth-server实践:使用授权方式四:client_credentials 模式下access_token做业务!!!...
查看>>
jquery miniui 学习笔记
查看>>
dubbo AdaptiveExtension
查看>>
Scrapy系列教程(1)------命令行工具
查看>>
Using Autorelease Pool Blocks
查看>>
spring-struts-mybatis整合错误集锦
查看>>
Maven 通过maven对项目进行拆分、聚合(重点)
查看>>
TWaver版3D化学元素周期表
查看>>
Java 中最常见的 5 个错误
查看>>
[AWS vs Azure] 云计算里AWS和Azure的探究(2)
查看>>
查看是否安装.NET Framework、.NET Framework的版本号、CLR版本号
查看>>