hdu1864 最大报销额(01背包)
转载请注明出处:http://blog.csdn.net/u012860063
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864
m Type_1:price_1 Type_2:price_2 ... Type_m:price_m
当中正整数 m 是这张发票上所开物品的件数,Type_i 和 price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文字母表示。当N为0时,所有输入结束,对应的结果不要输出。
200.00 3
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
123.50
1000.00
1200.50
该题要注意的就是每张单子A种类的总和不能大与600,相同B,C类也一样,刚開始我就错了这里,还有注意假设不是A,B,C类的不能够报销;
该题就是要把浮点型变成整数这样才干用01背包,这里就仅仅要乘以100就能够了。
代码例如以下:
#include <cstdio>
#include <cstring>
#define M 3000057
//因为每张发票不超过1000,最多30张,扩大100倍数后开这么大就可以
int f[M],val[M],flag[47];
int max(int a,int b)
{
if(a > b)
return a;
else
return b;
}
int main()
{
double Q,x;
int X,q,t,n,i,j,k,l,N,m;
char C;
while(scanf("%lf%d",&Q,&N) && N )
{
q = (int)(Q*100);//将小数转换为整数
memset(flag,0,sizeof(flag));
memset(val,0,sizeof(val));
memset(f,0,sizeof(f));
l = 0,k=0;
for(i = 0 ; i < N ; i++)
{
scanf("%d",&m);
int A1=0,B1=0,C1=0;
for(j = 0 ; j < m ; j++)
{
scanf("%*c%c:%lf",&C,&x);
X=(int)(x*100);
if(C!='A' && C!='B' && C!='C')
{
flag[i] = 1;
continue;
}
if(C == 'A')
A1+=X;
else if(C == 'B')
B1+=X;
else if(C == 'C')
C1+=X;
if(X>60000 || A1>60000 || B1>60000 || C1>60000)
{
flag[i] = 1;
continue;
}
if(flag[i] == 1)
continue;
else
{
val[k]+=X;
}
}
if(flag[i]!=1)
k++;
else
val[k] = 0;
}
for(i = 0 ; i < k ; i++)//01背包
{
for(j = q ; j >= val[i]; j--)
{
f[j] = max(f[j],f[j-val[i]]+val[i]);
}
}
printf("%.2lf\n",f[q]/100.0);
}
return 0;
}
hdu1864 最大报销额(01背包)的更多相关文章
- hdu1864最大报销额(01背包)
http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=187#problem/G 该题要注意的就是每张单子A种类的总和不能大与600,同 ...
- HDU1864 最大报销额 01背包
非常裸的01背包,水题.注意控制精度 #include <iostream> #include <algorithm> #include <cstdio> #inc ...
- HDU 1864 最大报销额 0-1背包
HDU 1864 最大报销额 0-1背包 题意 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上, ...
- 九度OJ 1025 最大报销额(01背包)
题目1025:最大报销额 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2683 解决:608 题目描述: 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具( ...
- HDU -1864最大报销额(01背包)
这道题属于简单的01背包,但是背包问题还算简单,就是前面的细节处理的时候要注意,题意大致说了三条限制吧 1. 只有a, b, c 三种类型的发票可以报销,其它的一律不报销 2. 物品单项的报销额不超过 ...
- HDOJ 1864 最大报销额(01背包)
http://acm.hdu.edu.cn/showproblem.php?pid=1864 最大报销额 Time Limit: 1000/1000 MS (Java/Others) Memor ...
- 杭店 ACM 1864 最大报销额 01背包
![勾选C++才能过 题意: 先规定可以报销一定额度的发票,物品类型有A,B,C,三种.要求每张发票总额不得超过1000元,单项物品不得超过600.求报销的最大额 分析: 先找到合格的发票,然后再挑选 ...
- hdu 1864 最大报销额 01背包
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- HDU 1864 最大报销额(01背包,烂题)
题意:被坑惨,单项不能超过600,其实是一张发票上A类/B类/C类的总和分别不能超过600. 思路:此题的数据很烂.用贪心也能过,用01背包也可以.都测试不出到底那些是错的. #include < ...
- hdu1864最大报销额 01
先把小数乘100变成整数然后处理每个发票里面可以报销的 最后自底向上DP #include <stdio.h> #include <algorithm> #include &l ...
随机推荐
- Learn Docker
Learn Docker A Container is to VM today, what VM was to Physical Servers a while ago. The workload s ...
- 保存项目文件“XXX.csprj”时出错。类没有注册。
[出错提示]保存项目文件“XXX”时出错.类没有注册.正在查找具有CLSID的对象:{D9B3211D-E57F-4426-AAEF-30A806ADD397}. [解决办法] 需要安装:MSXML_ ...
- bzoj 3052: [wc2013]糖果公园 带修改莫队
3052: [wc2013]糖果公园 Time Limit: 250 Sec Memory Limit: 512 MBSubmit: 506 Solved: 189[Submit][Status] ...
- XSS解决方案系列之四:关于编码
本文准备说明以下几个问题: 1. 关于重复编码的问题 2. 关于编码的多种形式的问题 3. 关于编码的几个常见问题 [说明] 本文所述编码是指encode,可以理解为转义,而不是编程序写代码. 编码或 ...
- Desert King
poj2728:http://poj.org/problem?id=2728 题意:给你n的点,每一个点会有一个坐标(x,y),然后还有一个z值,现在上你求一棵生成树,是的这棵生成树的所有边的费用/所 ...
- 【网络流24题】No.9 方格取数问题 (二分图点权最大独立集)
[题意] 在一个有 m*n 个方格的棋盘中, 每个方格中有一个正整数. 现要从方格中取数, 使任意 2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. 输入文件示例inp ...
- Buying Feed, 2010 Nov (单调队列优化DP)
约翰开车回家,又准备顺路买点饲料了(咦?为啥要说"又"字?)回家的路程一共有 E 公里,这一路上会经过 K 家商店,第 i 家店里有 Fi 吨饲料,售价为每吨 Ci 元.约翰打算买 ...
- 老陈---谈Delphi中SSL协议的应用[转]
摘要:本文主要介绍如何在Delphi中使用SSL协议.一共分为七个部分:(1)SSL协议是什么?(2)Delphi中如何使用SSL协议?(3)SSL客户端编程实例.(4)SSL服务端编程实例.(5)S ...
- user模式下编译android 代码被proguard优化导致类和变量丢失
在Android项目中用到JNI,当用了proguard后,发现native方法找不到很多变量,原来是被produard优化掉了.所以,在JNI应用中该慎用progurad啊. 解决办法: 1.在An ...
- http实现发送post请求,获取结果集
package com.ming; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.Ou ...