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

思路:再01背包的问题上稍作修改
如何满足 :卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)?并使得余额最少?
找到最贵的菜,卡上的剩余金额大于或等于5元,必然要买下它,先让容量-5再进入01背包循环,找到dp[容量-5](存的是该容量下,最大的价值)。
用了swap函数来找最贵的菜,所以用的C++头文件。
这是回家耍了6天后的第一个ACM题目,故意找的一个稍微熟悉又不白痴的算法,好久没一次过,开心。

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std; #define max(a,b) a>b?a:b int main()
{
int n,cost[1100],weight[1100],va,v,dp[1100];
while(scanf("%d",&n)!=EOF&&n!=0)
{
for(int i=0;i<n;i++)
{
scanf("%d",&cost[i]);
if(cost[i]>cost[0])
swap(cost[i],cost[0]);
weight[i]=cost[i];
}
scanf("%d",&va);
if(va<5)
printf("%d\n",va);
else
{
v=va-5;
memset(dp,0,sizeof(dp));
for(int i=1;i<n;i++)
for(int j=v;j>=weight[i];j--)
dp[j]=max(dp[j],dp[j-weight[i]]+cost[i]);
printf("%d\n",va-dp[v]-cost[0]);
} }
}

2546 ACM 01背包的更多相关文章

  1. hdu 2546 典型01背包

    分析:每种菜仅仅可以购买一次,但是低于5元不可消费,求剩余金额的最小值问题..其实也就是最接近5元(>=5)时, 购买还没有买过的蔡中最大值问题,当然还有一些临界情况 1.当余额充足时,可以随意 ...

  2. HDU 2546(01背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 http://blog.csdn.net/xujinsmile/article/details/79694 ...

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

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

  4. HDU 2546 01背包

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 经典的01背包 预留5元买最贵的,剩余的就是01背包. #include<stdio.h> # ...

  5. HDU 2546 饭卡(01 背包)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 思路:需要首先处理一下的的01背包,当饭卡余额大于等于5时,是什么都能买的,所以题目要饭卡余额最小, ...

  6. hdu 01背包汇总(1171+2546+1864+2955。。。

    1171 题意比较简单,这道题比较特别的地方是01背包中,每个物体有一个价值有一个重量,比较价值最大,重量受限,这道题是价值受限情况下最大,也就值把01背包中的重量也改成价值. //Problem : ...

  7. ACM HDU Bone Collector 01背包

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 这是做的第一道01背包的题目.题目的大意是有n个物品,体积为v的背包.不断的放入物品,当然物品有 ...

  8. 3466 ACM Proud Merchants 变形的01背包

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3466 题意:假设你有M元,已经Pi,Qi,Vi(i为角标,1<i<N),当M>Qi,时才 ...

  9. 2018牛客网暑期ACM多校训练营(第三场) A - PACM Team - [四维01背包][四约束01背包]

    题目链接:https://www.nowcoder.com/acm/contest/141/A 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...

随机推荐

  1. 20165314 学习基础和C语言基础调查

    技能学习心得 你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 从小我的父母就逼着我学习很多技能,比如钢琴,围棋,书法等,不过很 ...

  2. MongoDB C#驱动给内嵌list添加数据

    Fc fc = new Fc() {}; var temp = Builders<MModel>.Filter.Where(m=>m.id== "882d4d22-ff70 ...

  3. POJ 2001 Shortest Prefixes(字典树活用)

    Shortest Prefixes Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 21651   Accepted: 927 ...

  4. 字典树HihoCoder - 1014

    输入的第一行为一个正整数n,表示词典的大小,其后n行,每一行一个单词(不保证是英文单词,也有可能是火星文单词哦),单词由不超过10个的小写英文字母组成,可能存在相同的单词,此时应将其视作不同的单词.接 ...

  5. dump增加的表数据

    备份mysql数据库表中,增加的部分 前提条件: 备份库和正式库表结构一样: 表名不一样可以改: 备份库:192.168.1.10 正式库:192.168.1.11 获取当前"备份" ...

  6. Git推送错误Remote: User permission denied错误解决方法

    用了别的同事的电脑,推送代码,报错. 解决方法: 修改别人的密码,改成自己的账号和密码就可以了.

  7. 反射PropertyInfo的简单使用

    namespace EF6._0Test { class Program { /// <summary> /// PropertyInfo的简单使用 /// </summary> ...

  8. 微信小程序 View:flex 布局

    微信小程序 View 支持两种布局方式:Block 和 Flex 所有 View 默认都是 block 要使用 flex 布局的话需要显式的声明: display:flex; 下面就来介绍下微信小程序 ...

  9. [转] Lodash常用API笔记

    原生用法 直接使用的API _.reject 根据条件去除某个元素. var foo = [ {id: 0, name: "aaa", age: 33}, {id: 1, name ...

  10. MySql定期存档数据

    # 创建归档表(只复制表结构和索引) CREATE TABLE Orders_2016 like Orders; # 删除归档表的所有索引(这样可以提高插入速度) # 以前的数据导入归档表 INSER ...