/** 题目描述:现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。
输入:测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给定的报销额度,N(N<=30)是发票张数。随后是 N 行输入,每行的格式为:m Type_1:price_1 Type_2:price_2 ... Type_m:price_m其中正整数 m 是这张发票上所开物品的件数,Type_i 和 price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文字母表示。当N为0时,全部输入结束,相应的结果不要输出。
输出:对每个测试用例输出1行,即可以报销的最大数额,精确到小数点后2位。
样例输入:
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
其实是0-1背包问题*/
#include <cstdio>
#include <iostream>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <functional>using namespace std;const int MAX = 100;
const double EPS = 1e-6;
const int M = 31;int f[3100000 + 10];int main()
{double Q;int q;int N;int n;string line;vector<int> v;#ifndef ONLINE_JUDGEifstream cin("d:\\OJ\\uva_in.txt");
#endifwhile (getline(cin, line)){istringstream s1(line);s1 >> Q >> N;if (N == 0)break;v.clear();q = int(Q * 100);//cout << q << endl;while (N--){getline(cin, line);istringstream s(line);s >> n;string str;int sum = 0;bool flag = true;while (n--){s >> str;char buf[MAX];strcpy(buf, str.c_str());char type;double price;sscanf(buf, "%c:%lf", &type, &price);if ((type != 'A' && type != 'B' && type != 'C') || price > 600){flag = false;break;}sum += int(price * 100);}//cout << "flag:" << flag << " sum:" << sum << endl;if (flag && sum <= 100000)v.push_back(sum);}//cout << "size:" << v.size() << endl;memset(f, 0x00, sizeof(f));for (int i = 0; i < v.size(); i++) {for (int j = q; j >= v[i]; j--) {f[j] = max(f[j - v[i]] + v[i], f[j]);}}cout.precision(2);cout << fixed << double(f[q]) / 100 << endl;}return 0;
}

题目1025:最大报销额相关推荐

  1. 题目1025:最大报销额(动态规划之01背包问题)

    题目1025:最大报销额 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5270 解决:1272 题目描述: 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具 ...

  2. HD1864_最大报销额

    最大报销额                                                Time Limit: 1000/1000 MS (Java/Others)    Memor ...

  3. hun暑期实训 最大报销额(01背包) 关于动态内存分配的new与delete

    文章目录 题目 思路 AC代码1 AC代码2 new与delete 题目 思路 这个题主的难点要有三个方面. 第一个方面是数据不好输入.题目中所给的数据都是做题需要的数据,而且是需要分开存储的.对于字 ...

  4. HDU - 最大报销额(01背包|贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...

  5. hdoj 1864 最大报销额 【01背包】||【dfs】

    最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  6. HDU_最大报销额(DP)

    最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  7. HDUOJ1864最大报销额(01背包)

    最大报销额 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissio ...

  8. HDU- 最大报销额

    ,0-1背包 思路就是如果报销n张就必须报销n-1张. j表示可以报销的张数. 状态方程:dp[j] = Max(dp[j], dp[j-1]+v[i]);//状态方程 恶心地方:有这样的输入数据 3 ...

  9. HDU 最大报销额 (0 1 背包)

    最大报销额 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submiss ...

最新文章

  1. 听说你有病,我这儿可有对症的药
  2. redis的安装及springDataRedis
  3. 洛谷 P1757 通天之分组背包
  4. 假如王撕葱是程序员。。。
  5. 2019年,ALEXA将会走向何方?
  6. MySQL:备份数据库脚本报错mysqldump: Couldn‘t execute ‘SELECT COLUMN_NAME****
  7. UI素材|屏幕移动线框套件
  8. C++ Qt学习笔记(4)绘图
  9. Windows Server 2003安装应用程序时,提示缺失kernel.dll文件
  10. 如何打造7*24h持续交付通道?阿里高级技术专家的5点思考
  11. MySQL 安装及配置 Navicat 工具
  12. oracle pmon 多长时间,oracle 11g pmon工作内容系列一
  13. 自然语言处理——字符串基础操作及应用
  14. CEC2018:动态多目标测试函数DF6~DF9的PS及PF(提供Matlab代码)
  15. python如何让文字竖排输出_html中如何让文字竖排显示?总结实现文字竖排样式的多种方法...
  16. PC与IOS outlook客户端配置大全——(163邮箱、QQ邮箱、谷歌gmail邮箱)
  17. 基于中点算法和Bresenham算法绘制椭圆
  18. 一个英语学渣是如何通过英语六级的
  19. Windows——在设备和驱动器界面删除天翼云盘图标的方法
  20. MPPT电源控制器设计

热门文章

  1. python快速编程入门课后题答案-python语言程序设计基础(嵩天)第四章课后习题部分答案...
  2. python 装饰器 参数-python函数装饰器之带参数的函数和带参数的装饰器用法示例...
  3. python训练营免费领取-21天训练营丨Python量化投资打卡第五期!学完押金全返!...
  4. python软件安装步骤-一篇非常棒的安装Python及爬虫入门博文!
  5. python 代码-python经典代码
  6. python大数据分析实例-Python大数据处理案例
  7. 学python可以干嘛-学 Python 都用来干嘛的?
  8. python条件语句-Python if else条件语句详解
  9. python表白程序-用Python做一个表白小姐姐的程序
  10. python七段数码管设计图案-python实现七段数码管和倒计时效果