hdu 1864 01背包变形(浮点化整)
来源:互联网 发布:大数据研究意义 编辑:程序博客网 时间:2024/04/30 06:40
http://acm.hdu.edu.cn/showproblem.php?pid=1864
Problem Description
现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。
Input
测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给定的报销额度,N(<=30)是发票张数。随后是 N 行输入,每行的格式为:
m Type_1:price_1 Type_2:price_2 ... Type_m:price_m
其中正整数 m 是这张发票上所开物品的件数,Type_i 和 price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文字母表示。当N为0时,全部输入结束,相应的结果不要输出。
m Type_1:price_1 Type_2:price_2 ... Type_m:price_m
其中正整数 m 是这张发票上所开物品的件数,Type_i 和 price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文字母表示。当N为0时,全部输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即可以报销的最大数额,精确到小数点后2位。
Sample Input
200.00 32 A:23.50 B:100.001 C:650.003 A:59.99 A:120.00 X:10.001200.00 22 B:600.00 A:400.001 C:200.501200.50 32 B:600.00 A:400.001 C:200.501 A:100.00100.00 0
Sample Output
123.501000.001200.50
然后背包容量为最大报销额,物品为满足条件的报销单数,物品价值==物品重量。然后注意浮点数不能做数组下标,因为题目数两位小数,故此乘以100化整。
#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int bill[105];int dp[31*1000*100];int main(){ int n; double t; while(~scanf("%lf%d",&t,&n)) { if(n==0) break; int i,j,m,count=0; double temp[3],sum,tt; char ch; t=(int)(t*100); for(i=0;i<n;i++) { sum=0; scanf("%d",&m); temp[0]=temp[1]=temp[2]=0; bool flag=true; for(int j=0;j<m;j++) { getchar(); ch=getchar(); scanf(":%lf",&tt); if('A'==ch||'C'==ch||ch=='B') { temp[ch-'A']+=tt; sum+=tt; } else flag=false; } if(flag&&sum<=1000&&temp[0]<=600&&temp[1]<=600&&temp[2]<=600) bill[++count]=(int)(sum*100); } memset(dp,0,sizeof(dp)); for(int i=1;i<=count;i++) for(int j=(int)t;j>=bill[i];j--) if(j>=bill[i]) dp[j]=max(dp[j],dp[j-bill[i]]+bill[i]); /*for(int i=(int)t;i>=(int)t-10;i--) printf("(%d)\n",dp[i]);*/ printf("%.2lf\n",1.0*dp[(int)t]/100); } return 0;}
0 0
- hdu 1864 01背包变形(浮点化整)
- hdu 2546 饭卡(01背包变形)
- HDU 2955 Robberies(01背包变形)
- HDU 2955-Robberies(01背包变形)
- HDU 2955 (01背包变形)
- hdu 1864(01背包容量为浮点数)
- hdu 2955 01 背包(浮点数)
- 01背包变形 HDU 2660
- 01背包变形 HDU 3496
- HDU 3466 01背包变形
- hdu 1171 01背包变形
- hdu 2955(01背包变形)
- HDU 1171 01背包变形
- hdu 3466(背包变形)
- hdu 1171 Big Event in HDU(01背包变形)
- hdu 1864 最大报销额 01背包变形
- hdu 2546 饭卡【01背包变形||记忆化搜索】
- HDU 2546 饭卡(01背包小变形)
- [GitHub][2014-05-16 10:00:18]django-example
- C经典之1-while---ShinePans
- 豆腐干看两地分居考虑过健康了
- 刀子.鞋子.脑子
- 当您尝试共享打印机的计算机运行 Windows 7 或 Windows Server 2008 R2 上的 0x000006D9 错误
- hdu 1864 01背包变形(浮点化整)
- 汽车中不实用的八个配置
- 两个头文件相互包含的问题
- 鞋子比衣服更能彰显魅力
- 资料
- 时间DateTime类型转换为字符串String格式方法汇总 获得最后一次编译时间
- 整理和收集一些知识和技巧
- Effective Java读书笔记(3对于所有对象都通用的方法)
- android studio 删除Module的三个方法