hdu 1864 最大报销额 01背包变形

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

最大报销额

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17949    Accepted Submission(s): 5264


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时,全部输入结束,相应的结果不要输出。
 

Output
对每个测试用例输出1行,即可以报销的最大数额,精确到小数点后2位。
 

Sample Input
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
 

Sample Output
123.50 1000.00 1200.50
 把所有数据*100就可以转化为整数了,再用01背包就可以了。
不过我记得有一道杭电的与之类似的题,不可以用这种方法做。应该是这题的数据比较水。
代码:
#include <stdio.h>
#include <string.h>
#define MAX 3500000
int dp[MAX] ;
int v[MAX]
double max(double a , double b)
{
	return a>b?a:b ;
}
int main()
{
	double q ;
	int n ;
	while(~scanf("%lf%d",&q,&n) && n)
	{
		memset(dp,0,sizeof(dp)) ;
		int k = 0 ;
		for(int i = 0 ; i < n ; ++i)
		{
			int m ;
			double a=0,b=0,c=0,price;
			char type ;
			scanf("%d",&m);
			for(int j = 0 ; j < m ; ++j)
			{
				getchar() ;
				scanf("%c:%lf",&type,&price) ; 
				if((type!='A' && type!='B' && type!='C') || a+b+c>1000 || a>600||b>600||c>600)
				{
					goto here ;
				}
			}
			value[k++] = sum ;
			here : ;
		}
		for(int i = 0 ; i < k ; ++i)
		{
			for(int j = 1 ; j < k ; ++j)
			{
				
			}
		}
		printf("%.2lf\n",dp[n-1]) ;
	}
	return 0 ;
}

与君共勉
题目1025:最大报销(01背包问题) 题目描述:     现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度最大报销。 输入:     测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给 阅读详情

相关推荐

九度oj 题目1025:最大报销 【ZJU2007考研机试题6】

题目1025:最大报销 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3104 解决:720 题目描述:     现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票

神州之光的专栏 1192

最大报销【暑期集训S题】【0-1背包

        这的确是一个背包问题,但是他又有不一样的地方就在于对于实型的处理应该怎么做。现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度最大报销。 Input测试输入包含若干测试用例。每个测试...

既然弱小,就只顾变强就是了 454

hdu1864最大报销

Description 现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度最大报销。 Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给定的报销额度,...

陈常杰的博客 429

HDU - 1864最大报销——算法笔记

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864 Problem Description: 现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最...

学而不思则忘 892

hdu 1864 最大报销01背包变形~】(实数转整型)

最大报销 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 27158    Accepted Submission(s): 8335 Problem Description 现有一笔经费可以报销一定额度发票。允

loving coding 467

HDU 1864 最大报销

传送门 01背包,有一点变形。 给一些发票(物品),每张发票都有一个报销(价值),每张发票还有一个判断合不合法的过程(这题很坑,话都说不明白。它要求的是每张发票上的A,B,C每类都不大于600.0,而不是每一项),每张发票要么全报要么全不报。问你在总报销不大于Q的情况下最大的总报销是多少。 刚一看会发现一个问题,它没有一个显式的背包容量的概念。(当然,这道题可以把价值和重量当成一个东西,有人...

Crossing over 279

HDU 1864最大报销 01背包问题

B - 最大报销 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1864 Appoint description: Description 现有一笔经费可以报销一定额度发票。允许报销发票类型包括买...

weixin_30847939的博客 110

HDU OJ 1864 最大报销 01背包

最大报销Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Description 现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。

swust_fang 567

hdu 1864 最大报销

01背包问题的变形发票张数作为背包容量,选出可以报销发票进行动态规划 dp[i][j] = max(dp[i-1][j-1] + v[i], dp[i-1][j]); #include #include #include using namespace std; double dp[35], v[35], q, u; int f[35], n, m; char ch; int

做一个善于思考的人 779

hdu1864——01背包变形

Problem Description 现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度最大报销。   Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q

huanhuanxiaoxiao的博客 359

hdu 1864 01背包变形(浮点化整)

http://acm.hdu.edu.cn/showproblem.php?pid=1864 Problem Description 现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度

ACM,再见! 852

HDU 2955 Robberies(01背包变形

Robberies Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 16522Accepted Submission(s): 6065 Problem Description The aspiring Roy the Ro...

weixin_30559481的博客 77

动态规划集合

动态规划,少说也做了,30 40道了但是感觉还是没有入门,接下来一星期将重新做动态规划,hdu入门的,uva入门的,外加poj的,把动态规划都重新学一下 01背包知识点 1.Robberies (hdu2955)(01背包变形) 第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱最脑残的是把总的概率以为是抢N家银行的概率之和… 实际上可...

aysd68784的博客 208

算法 | 动态规划

动态规划解题报告 参考:动态规划分类题目总结 一、基础DP 1、递推 、基础 HDU2084 数塔【基础DPHDU2018 母牛的故事【基础DPHDU2044 一只小蜜蜂...【基础DPHDU2041 超级楼梯【基础DPHDU2050 折线分割平面【基础DPHDU1003 Max Sum【基础DP 最大子段和】 Codeforces 429B W...

逐梦者 761

最大报销HDU-1864

题目如下: 现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度最大报销。  Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给定的报销额度,N(...

小冰球 519

2090 Problem H 最大报销

问题 H: 最大报销 时间限制: 1 Sec  内存限制: 32 MB 提交: 143  解决: 4 [提交][状态][讨论版][命题人:外部导入] 题目描述 现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的...

子衿 921

ACM-DP最大报销——HDU1864

最大报销 Problem Description 现有一笔经费可以报销一定额度发票。允许报销发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度最大报销。   Input 测试输入包含若干测试用例。每个测试用例的第1行

继续激情,继续奋斗。 1997
上一篇: hdu3127 WHUgirls 残忍的完全背包。。。比较有意思,,物品的那层循环放在最里面
下一篇: hdu 1540 Tunnel Warfare 一个关于线段的故事~~~线段树是我无法言明的伤~
Lionel_D
博客等级 码龄12年 69粉丝 221原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值