hdu 1864 最大报销额(背包)
最大报销额
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 24020 Accepted Submission(s): 7325
m Type_1:price_1 Type_2:price_2 ... Type_m:price_m
其中正整数 m 是这张发票上所开物品的件数,Type_i 和 price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文字母表示。当N为0时,全部输入结束,相应的结果不要输出。
2 A:23.50 B:100.00
1 C:650.00
3 A:59.99 A:120.00 X:10.00
1200.00 2
2 B:600.00 A:400.00
1 C:200.50
1200.50 3
2 B:600.00 A:400.00
1 C:200.50
1 A:100.00
100.00 0
1000.00
1200.50
#include<cstdio>
#include<iostream>
#include<cstring>
#define clr(x) memset(x,0,sizeof(x))
#define MIN (1e-9)
using namespace std;
double dp[];
struct node
{
double val;
int cost;
}bag[];
char s[];
int main()
{
int n,m,all,flag;
double limit,k,mon_a,mon_b,mon_c,maxans;
while(scanf("%lf%d",&limit,&n)&& n!=)
{
clr(bag);
clr(dp);
all=;
for(int i=;i<=n;i++)
{
scanf("%d",&m);
flag=;
mon_a=mon_b=mon_c=;
for(int i=;i<=m;i++)
{
scanf("%s",s);
sscanf(s+,"%lf",&k);
if(flag) continue;
if(s[]=='A')
{
mon_a+=k;
}
else if(s[]=='B')
{
mon_b+=k;
}
else if(s[]=='C')
{
mon_c+=k;
}
else
flag=;
}
if(!flag && mon_a<=+MIN && mon_b<=+MIN && mon_c<=+MIN && mon_a+mon_b+mon_c<=+MIN && mon_a+mon_b+mon_c<=limit+MIN )
{
bag[++all].cost=;
bag[all].val=mon_a+mon_b+mon_c;
// printf("%d %lf\n",bag[all].cost,bag[all].val);
}
}
for(int i=;i<=all;i++)
for(int j=all;j>=bag[i].cost;j--)
if(dp[j]<dp[j-bag[i].cost]+bag[i].val && dp[j-bag[i].cost]+bag[i].val<=limit+MIN)
dp[j]=dp[j-bag[i].cost]+bag[i].val;
maxans=;
for(int i=;i<=all;i++)
{
maxans=maxans>dp[i]?maxans:dp[i];
}
printf("%.2lf\n",maxans);
}
return ;
}
hdu 1864 最大报销额(背包)的更多相关文章
- HDU 1864 最大报销额 0-1背包
HDU 1864 最大报销额 0-1背包 题意 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上, ...
- HDOJ(HDU).1864 最大报销额 (贪心)
HDOJ(HDU).1864 最大报销额 题意分析 题目有点问题,原题中说的 单项物品的价值不得超过600元 应该是单类物品的价值不能超过600元. 一开始以为是01背包,后来按贪心写过了. 一张一张 ...
- HDU -1864最大报销额(01背包)
这道题属于简单的01背包,但是背包问题还算简单,就是前面的细节处理的时候要注意,题意大致说了三条限制吧 1. 只有a, b, c 三种类型的发票可以报销,其它的一律不报销 2. 物品单项的报销额不超过 ...
- hdu 1864 最大报销额【01背包】
题目链接:https://vjudge.net/problem/HDU-1864 题目大意: 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求 ...
- hdu 1864 最大报销额(01背包)
最大报销额 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU - 1864 最大报销额 (背包)
题意: 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元.现请你编 ...
- HDU 1864最大报销额(一维背包)
题目地址:HDU 1864 刚上来看着挺麻烦的..细致看了看原来好简单好简单...仅仅要去掉一些不符合要求的发票,剩下的就是最简单的背包问题了..对于小数问题,仅仅要*100就变成整数了. 代码例如以 ...
- hdu 1864 最大报销额 01背包
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- HDU - 1864 最大报销额 (01背包)
题意:现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元.现请你编写 ...
随机推荐
- AndroidStudio 添加Selector文件,在res文件夹下添加文件夹
在res文件夹下添加文件夹: 添加Selector文件:
- 通过实例来学习XML DTD
使用DTD的原因: 注意:由于它自身的一些缺点,DTD终将被淘汰,但是它还是要学习的.学习完DTD后,后面继续学习XML Schema. 1,通过 DTD,您的每一个 XML 文件均可携带一个有关其自 ...
- beego 相关
bee api bapi bee run -downdoc=true -docgen=true
- 通过JDBC连接HiveServer2
如果通过JDBC连接HiveServer2时提示:User: hive is not allowed to impersonate hive,需要在core-site.xml中新增如下配置: hado ...
- Python脚本 - 查询磁盘的读写次数信息
测试系统为:Centos 6.7 Python版本为: 3.6.4 脚本功能:查看指定磁盘的读写及时间等相关信息 #!/usr/bin/env python3 from collections imp ...
- 在linux程序里面,知道一个函数地址,改函数是属于某个动态库的,怎么样得到这个动态库的全【转】
转自:http://www.360doc.com/content/17/1012/11/48326749_694292472.shtml 另外dl_iterate_phdr可以查到当前进程所装在的所有 ...
- python基础===利用PyCharm进行Python远程调试(转)
原文链接:利用PyCharm进行Python远程调试 背景描述 有时候Python应用的代码在本地开发环境运行十分正常,但是放到线上以后却出现了莫名其妙的异常,经过再三排查以后还是找不到问题原因,于是 ...
- FineReport——决策系统组件API
FineReport数据决策系统中自定义主题包API接口由5大部件组成:框架布局.目录树组件.多tab组件.Navigation组件和Gallery组件. 首先,对theme.js进行总体配置: (f ...
- Django REST Framework JWT提供的登录签发的视图
Django REST Framework JWT提供了一个视图.在我们登录的时候,会校验用户名.密码是否正确.如果信息无误,可以返回一个JWT token.就可以简单地实现了记录用户登录状态. 用法 ...
- Subsets I&&II——经典题
Subsets I Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a s ...