DP专题训练之HDU 1864 最大报销额
做DP一定要注意数组的大小,嗯,就是这样~
Description
Input
m Type_1:price_1 Type_2:price_2 ... Type_m:price_m
其中正整数 m 是这张发票上所开物品的件数,Type_i 和 price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文字母表示。当N为0时,全部输入结束,相应的结果不要输出。
Output
Sample Input
Sample Output
又是一道01背包的模板题,01背包问题--取或者不取求最优解~~
//Asimple
//#include <bits/stdc++.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cctype>
#include <cstdlib>
#include <stack>
#include <cmath>
#include <set>
#include <map>
#include <string>
#include <queue>
#include <limits.h>
#include <time.h>
#define INF 0xfffffff
#define mod 1000000
#define swap(a,b,t) t = a, a = b, b = t
#define CLS(a, v) memset(a, v, sizeof(a))
#define debug(a) cout << #a << " = " << a <<endl
#define abs(x) x<0?-x:x
#define srd(a) scanf("%d", &a)
#define src(a) scanf("%c", &a)
#define srs(a) scanf("%s", a)
#define srdd(a,b) scanf("%d %d",&a, &b)
#define srddd(a,b,c) scanf("%d %d %d",&a, &b, &c)
#define prd(a) printf("%d\n", a)
#define prdd(a,b) printf("%d %d\n",a, b)
#define prs(a) printf("%s\n", a)
#define prc(a) printf("%c", a)
using namespace std;
typedef long long ll;
const int maxn = ;
int n, m, num, T, k, len, ans, sum;
int edx, edy, stx, sty;
int dp[];//这里特别注意..要根据题目来确定最大的dp区间~题目是每张发票1000,最多30,因为我扩大了100倍,所以需要这么大
int mon[maxn];
double x, y;
char ch;
void input() {
while( ~scanf("%lf%d",&x, &T) && T ) {
sum = (int)(x * );
len = ;
CLS(mon, );
CLS(dp, );
while( T -- ) {
scanf("%d", &n);
int a=, b=, c=;
bool f = true;
while( n -- ) {
scanf(" %c:%lf", &ch, &y);
int v = (int)(y*);
if( ch == 'A' && a+v<= ) {
a += v;
} else if( ch == 'B' && b+v<=) {
b += v;
} else if( ch == 'C' && c+v<=) {
c += v;
} else f = false;
}
if( a+b+c<= && a<= && b<= && c<= && f ) {
mon[len++] = a+b+c;
}
}
for(int i=; i<len; i++) {
for(int j=sum; j>=mon[i]; j--) {
dp[j] = max(dp[j], dp[j-mon[i]]+mon[i]);
}
}
printf("%.2lf\n", dp[sum]/100.0);
}
} int main(){
input();
return ;
}
DP专题训练之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背包】
题目链接:https://vjudge.net/problem/HDU-1864 题目大意: 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求 ...
- HDU 1864 最大报销额(DP)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1864 题目: 最大报销额 Time Limit: 1000/1000 MS (Java/Others) ...
- DP专题训练之HDU 2955 Robberies
打算专题训练下DP,做一道帖一道吧~~现在的代码风格完全变了~~大概是懒了.所以.将就着看吧~哈哈 Description The aspiring Roy the Robber has seen a ...
- HDU 1864最大报销额 01背包问题
B - 最大报销额 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- HDU 1864最大报销额(一维背包)
题目地址:HDU 1864 刚上来看着挺麻烦的..细致看了看原来好简单好简单...仅仅要去掉一些不符合要求的发票,剩下的就是最简单的背包问题了..对于小数问题,仅仅要*100就变成整数了. 代码例如以 ...
- HDU -1864最大报销额(01背包)
这道题属于简单的01背包,但是背包问题还算简单,就是前面的细节处理的时候要注意,题意大致说了三条限制吧 1. 只有a, b, c 三种类型的发票可以报销,其它的一律不报销 2. 物品单项的报销额不超过 ...
- hdu 1864 最大报销额 01背包
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
随机推荐
- Java 枚举7常见种用法
DK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便. 用法一:常量 在JDK1.5 之前,我们定义常量都是: ...
- pyspider 安装时 Could not run curl-config
sudo aptitude install libcurl4-openssl-dev
- html5相关知识点的总结(有一些错误或者不足的地方)
1.页面结构上的一些宽松改变 <!DOCTYPE html>默认为标准模式 <meta charset="UTF-8"> 2.html5中新增的一些语义化标 ...
- jira操作
1. 字段 关键字 issuetype 2. 语法 2.1 in AND issuekey in (WQBNEWSDLDL-348, WQBNEWSDLDL-348, WQBNEWSDLDL-352, ...
- Java不同编码方式,中英文字符所占字节数
测试代码 public class Test { public static void main(String[] args){ String[] charsetNames={ "UTF-8 ...
- Javascript的GET、POST请求
POST.GET传输数据大小限制 HTTP协议规范没有对URL长度进行限制,也没有限制消息主体的大小,所以从理论上讲,GET.POST是没有大小限制的.那又为什么在使用过程中会有大小限制呢?? GET ...
- JDBC数据库1
数据库(Database)是按照数据结构来组织,存储,和管理数据的仓库.数据库有很多类型,从简单存储各种数据的的表格到能够储存大型数据的系统,在各方面得到了广泛的应用.数据库简介J.Martin给 数 ...
- DataTable 转 List<T>
最近在做一个项目,表的数据巨多,而且表的字段一般都在30个以上.公司规定不能用Nhibernate以及ef等ORM框架. 所以查询绑定时的工作量极为痛苦.没有办法,自己写了个DataTableToLi ...
- STM32 assert_param
在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用.如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义 ...
- C++中的"未定义的行为"
2.1 位运算 位运算的运算对象是整数类型的,并且把运算对象看成是一个二进制位的集合.运算对象可以是带符号也可以是无符号.如果是带符号且值为负,那么位运算如何处理运算对象的符号位依赖于机器.而且此时的 ...