题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546

这是一个变形的01背包问题,首先如果金额小于5元,剩余金额不变,为已有金额。如果大于等于5元
我们先用5元买最贵的菜。然后用剩下的钱买其他的菜这时就是一个典型的01背包问题了;
求出最大的花费,然后用总金额减去最大的花费即为剩余金额。

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; #define INF 0xfffffff
#define N 1005
int a[N], dp[N][N]; int main()
{
int n, m;
while(scanf("%d", &n), n)
{
for(int i=; i<=n; i++)
scanf("%d", &a[i]);
scanf("%d", &m);
if(m<)
{
printf("%d\n", m);
continue;
}
m-=;
sort(a+, a+n+);
for(int i=; i<n; i++)
{
for(int j=; j<=m; j++)
{
dp[i][j] = dp[i-][j];///千万不能忘的;
if(j>=a[i])
dp[i][j] = max(dp[i-][j], dp[i-][j-a[i]]+a[i]);
}
}
printf("%d\n", m+-dp[n-][m]-a[n]);
}
return ;
}

二维数组


#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; #define INF 0xfffffff
#define N 1005
int a[N], dp[N]; int main()
{
int n, m;
while(scanf("%d", &n), n)
{
memset(a, , sizeof(a));
memset(dp, , sizeof(dp));
for(int i=; i<=n; i++)
scanf("%d", &a[i]);
scanf("%d", &m);
if(m<)
{
printf("%d\n", m);
continue;
}
m-=;
sort(a+, a+n+);
for(int i=; i<n; i++)
{
for(int j=m; j>=a[i]; j--)
{
dp[j] = max(dp[j], dp[j-a[i]]+a[i]);
}
}
printf("%d\n", m+-dp[m]-a[n]);
}
return ;
}

一维数组

 
 

饭卡---hdu2546(01背包)的更多相关文章

  1. 饭卡-HDU2546(01背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory L ...

  2. HDOJ(HDU).2546 饭卡(DP 01背包)

    HDOJ(HDU).2546 饭卡(DP 01背包) 题意分析 首先要对钱数小于5的时候特别处理,直接输出0.若钱数大于5,所有菜按价格排序,背包容量为钱数-5,对除去价格最贵的所有菜做01背包.因为 ...

  3. [HDU2546]饭卡<dp 01背包>

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 #题目描述: 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前, ...

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

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

  5. hdu 2546 饭卡 (01背包)

    Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负) ...

  6. hdu 2546 饭卡【01背包】

    题目链接:https://vjudge.net/contest/103424#problem/C 饭卡                                Time Limit: 5000/ ...

  7. HDU 2546:饭卡(01背包)

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

  8. 题解报告:hdu 2546 饭卡(01背包)

    Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负) ...

  9. HDU 2546 饭卡(0-1背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 题意: 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金 ...

  10. HDU 2546 饭卡(01背包)

    题目代号:HDU 2546 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 饭卡 Time Limit: 5000/1000 MS (Java/ ...

随机推荐

  1. centos7系统nginx下phalcon环境搭建

    之前我们采用的是Apache服务器,可是每秒响应只能达到2000,听说nginx可以轻易破万, 于是换成nginx试试. phalcon的官网有nginx重写规则的示例,可是却与apache的不一致, ...

  2. 多媒体开发之视频回放---dm642 做rtsp 视频回放功能

    之前看过一款海康的视频录制和回放的ipnc 四路就是: 录制还是在本地电脑录制,通过插件在本地生成录制视频和snap图片, 回放估计就是按时间点生成的文件调用本地播放. http://m.blog.c ...

  3. 【转】虚拟串口VSPM解决串口编程问题

    通过串口调试软件 UartAssist.exe 和虚拟串口软件 VSPM,可以解决串口编程时没用硬件调试的问题,通过VSPM虚拟出串口设备,让程序发送信息到 VSPM 设备后通过 UartAssist ...

  4. SQLserver 设置自增为显式插入

    默认是状态是set IDENTITY_INSERT T2 off ,就是关闭了自动插入值的功能,为空时就会报错 ,,'') 报错: 消息 544,级别 16,状态 1,第 1 行当 IDENTITY_ ...

  5. UNIQLO

    UNIQLO品牌的迅销公司建立于1963年,当年是一家销售西服的小服装店.公司现任董事长兼总经理柳井正早年毕业于早稻田大学经济学专业,1972年8月进入迅销公司,1984年9月就任公司董事长兼总经理. ...

  6. WPF-datagrid右键菜单时先选中某行

    如题,很多时候,在datagrid中右键菜单时,当前没有选中行. 这就很恶心了对不,如果我是对某一行进行处理,难道还要先用左键选中这一行? 博主就被这个恶心了一把,然后在大佬博客帮助下找到了一个方法, ...

  7. 标签中的rel属性的含义

    rel与rev属性相同,它们都是属于LinkTypes属性. rel 属性 -- rel属性,描述了当前页面与href所指定文档的关系, rel是relationship(关系)的英文缩写. rev ...

  8. 在VS中调试javascript脚本

    https://blog.csdn.net/u010228798/article/details/78207375

  9. 复习及总结--.Net线程篇(4)

    这里要说的就是多线程的锁的问题了 锁:作用在于实现线程间的同步问题,最典型的是售票问题 1,InterLocked 提供的都是静态方法,用来同步对多个共享变量的访问,包括以原子方式递增,递减,比较和替 ...

  10. SecureCRT 常用技巧

    转自:http://blog.chinaunix.net/uid-26575352-id-3063143.html 快捷键: 1. ctrl + a :  移动光标到行首 2. ctrl + e :移 ...