链接:HDU-4055:最大报销额

题意:现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单类物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。

题解:处理出可以报销的发票的数组 a[] 。

   定义:dp[i] 为报销第 i 个发票的情况下报销的最大值;

   状态转移:dp[i] = max( dp[i],  dp[0 ~ i-1] + a[i]);

#include <bits/stdc++.h>
using namespace std; const double EPS = 1e-;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + ;
const int maxn = + ;
double Q;
int n, m;
double a[maxn];
double dp[maxn]; int main()
{
while(scanf("%lf%d", &Q, &n) != EOF && n){ memset(a, , sizeof(a));
memset(dp, , sizeof(dp)); int cnt = ;
for(int i = ; i < n; i++){
scanf("%d", &m);
bool ok = true;
char kind; double A = , B = , C = , p;
for(int i = ; i < m; i++){
scanf(" %c:%lf", &kind, &p);
if(kind < 'A' || kind > 'C' || p > ) ok = false;
else if(kind == 'A') A += p;
else if(kind == 'B') B += p;
else if(kind == 'C') C += p;
}
if(A > || B > || C > || A + B + C > min(1000.0, Q)) ok = false;
if(ok) a[cnt++] = A + B + C;
} for(int i = ; i < cnt; i++){
for(int j = i - ; j >= ; j--){
if(dp[j] + a[i] <= Q){
dp[i] = max(dp[i], dp[j] + a[i]);
}
}
} double ans = ;
for(int i = ; i < cnt; i++) ans = max(ans, dp[i]); printf("%.2f\n", ans);
} return ;
}

HDU-1864:最大报销额(浮点数01背包)的更多相关文章

  1. hdu 1864 最大报销额【01背包】

    题目链接:https://vjudge.net/problem/HDU-1864 题目大意: 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求 ...

  2. hdu 1864 最大报销额(01背包)

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

  3. HDU - 1864 最大报销额 (01背包)

    题意:现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元.现请你编写 ...

  4. HDU 1864 最大报销额 0-1背包

    HDU 1864 最大报销额 0-1背包 题意 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上, ...

  5. HDOJ(HDU).1864 最大报销额 (贪心)

    HDOJ(HDU).1864 最大报销额 题意分析 题目有点问题,原题中说的 单项物品的价值不得超过600元 应该是单类物品的价值不能超过600元. 一开始以为是01背包,后来按贪心写过了. 一张一张 ...

  6. HDU -1864最大报销额(01背包)

    这道题属于简单的01背包,但是背包问题还算简单,就是前面的细节处理的时候要注意,题意大致说了三条限制吧 1. 只有a, b, c 三种类型的发票可以报销,其它的一律不报销 2. 物品单项的报销额不超过 ...

  7. hdu 1864 最大报销额 01背包

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

  8. HDU 1864 最大报销额(01背包,烂题)

    题意:被坑惨,单项不能超过600,其实是一张发票上A类/B类/C类的总和分别不能超过600. 思路:此题的数据很烂.用贪心也能过,用01背包也可以.都测试不出到底那些是错的. #include < ...

  9. HDU 1864最大报销额 01背包问题

    B - 最大报销额 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  10. HDU - 1864 最大报销额 (背包)

    题意: 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元.现请你编 ...

随机推荐

  1. UIWebView 获取网页标题

    - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *urlString = webView.request.URL.absolu ...

  2. Python 有用的 map() deduce() filter() 函数

    #!/usr/bin/python#5!+4!+3!+2!+1! #give 3 return 3*2*1def jiechen(n): N = map(lambda x:x+1,range(n)) ...

  3. PyCharm2018激活码

    亲测可用: 来自:https://blog.csdn.net/u014044812/article/details/78727496

  4. 将Vue插件发布到npm的完整记录

    前言 ​ 面对越来越多的组件库,越开越多的ui库,学会发布库已经是前端必须会的事情了,也算是为开源贡献一份力量,在网络上看了一些前者的文章,也算的发布成功了,虽然还存在很多问题,路不积跬步,无以至千里 ...

  5. Python面向对象总结及类与正则表达式

    Python3 面向对象 一丶面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 类变 ...

  6. keil5 配置 stm32f103rc 软件仿真

  7. GO富集分析柱状图

    target_gene_id <- unique(read.delim("miRNA-gene interactions.txt")$EntrezID) # BiocInst ...

  8. scRNA-seq genomic analysis pipline

    a scRNA-seq genomic anlysis pipline .caret,.dropup>.btn>.caret{border-top-color:#000!important ...

  9. 浅谈style.height、clientHeight、offsetHeight、scrollHeight

    先分别介绍以下,以下资料来自MDN HTMLElement.offsetHeight 是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数. Element.clie ...

  10. Matlab调用C语言函数

    Matlab调用C语言函数 如果我有一个用C语言写的函数,实现了一个功能,如一个简单的函数:double add(double x, double y) { return x + y ;}现在我想要在 ...