dp,答案容易想到是 凑出价格总和≤m-5 + 没被使用的最大价格。

dp[i = 前i种价格][j = 价格总和] = 最大没使用的价格下标idx_m。

dp[i-1][j]存在的话,则只要更新idx_m。

如果dp[i-1][j-c[i]]存在但是dp[i-1][j]不存在,那么c[i]必须使用,idx不变。

把价格从小到大排序更容易写。

/**
alfs x kayi
*/
#include<bits/stdc++.h>
using namespace std; typedef long long ll; const int maxn = 1e3+;
int c[maxn];
int dp[maxn];
int n, m; int solve()
{
if(m < ) {
return m;
}
int lm = m-, i;
memset(dp+,-,sizeof(int)*lm);
sort(c+,c+n+);
dp[] = ; c[] = ;
for(i = ; i <= n; i++){
for(int j = lm; j>=c[i]; j--){
if(~dp[j-c[i]]){
dp[j] = ~dp[j]? i : dp[j-c[i]];
}
}
for(int j = c[i]-; j >= ; j--){
if(~dp[j]) dp[j] = i;
}
}
int ans = m ;
for(i = ; i <= lm; i++){
if(~dp[i]){
ans = min(ans, m-i-c[dp[i]]);
}
}
return ans;
} //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
while(scanf("%d",&n),n){
for(int i = ; i <= n; i++){
scanf("%d", c+i);
}
scanf("%d", &m);
printf("%d\n", solve());
}
return ;
}

UESTC 31 饭卡 card的更多相关文章

  1. UESTC 31 饭卡(Card) --背包问题

    背包问题. 思路:如果m<5,此时也不能消费,所以此时答案为m m>=5: 求出背包容量为m-5,买前n-1样便宜的菜(排个序)的最大价值(即最大消费,即消费完后剩余值最接近5)最后减去最 ...

  2. cdoj 31 饭卡(card) 01背包

    饭卡(card) Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/31 Des ...

  3. cdoj31-饭卡(card) (01背包)

    http://acm.uestc.edu.cn/#/problem/show/31 饭卡(card) Time Limit: 3000/1000MS (Java/Others)     Memory ...

  4. hdu 2546 饭卡 删除一个数的01背包

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  5. 【贪心+背包】【HDU2546】【饭卡】

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  6. 【01背包】HDU 2546 饭卡

    Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) ...

  7. HDU 2546 饭卡(01背包裸题)

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  8. hduoj 2546饭卡

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  9. HDU 2546.饭卡-动态规划0-1背包

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

随机推荐

  1. rest_framework 的验证,权限,频率

    回到顶部 快速实例 Quickstart 回到顶部 序列化 创建一个序列化类 简单使用 开发我们的Web API的第一件事是为我们的Web API提供一种将代码片段实例序列化和反序列化为诸如json之 ...

  2. ssis error at other ssis.pipeline "ole db destination" failed validation and returned validation status

    我在修改一个ssis的包,发现这个destination的表被改过了.所以就重建了表.就导致了这个错误. 打开包重新检查下表结构的匹配就好了

  3. protobuf在c++的使用方法以及在linux安装

      https://blog.csdn.net/wangyin668/article/details/80046798 https://www.cnblogs.com/zhouyang209117/p ...

  4. HTML6即将到来,你没有看错是HTML6

    HTML6提案1:对视频对象的更多控制 我们可能永远不会解决与压缩编解码器的争斗,但我们可以与之配合.不同的压缩算法可能需要更多的工作来实现,但是它们提供竞争.能对展现在页面上的视频帧提供更多控制的方 ...

  5. PHP会话管理

    Session使用 在每个页面中使用session之前,必须使用session_start() 在每个session中都可以使用$_SESSION这个全局数组,在页面必须调用session_start ...

  6. linux 访问 windows 共享文件夹

    http://www.01happy.com/linux-access-windows-shares-folders/

  7. maven 如何将自己的jar包添加到本地仓库

    1 准备一个需要添加到本地仓库的jar包 我这里准备了一个名为mail.jar 的jar包,放到E:\Install Files目录下面 2 下面演示如何将准备的jar包添加到本地仓库 1 语法 mv ...

  8. php spl数据结构

    1.双链表SplDoublyLinkedList 结构如图: 类定义: SplDoublyLinkedList implements Iterator , ArrayAccess , Countabl ...

  9. C#使用MediaInfo查看媒体信息

    1.将MediaInfo.dll放入可执行目录. 2.将官网Demo里的MediaInfoDLL.cs放入项目中.(http://mediainfo.sourceforge.net/en/Downlo ...

  10. Unable to run man pages on Centos 6

    I just installed CentOS 6 with minimal install. When i tried to read the linux manual pages using ma ...