题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864

注意事项:

  在这里所有输入的价格都是两位小数(题目没说,看论坛才知道的)。

  这里单项价格不能超过600,可能有这样的情况:2 A:300 A:400,非常坑(也是看论坛才知道的)。

  因为最多有30张发票,假设最多都是1000,那么数组就要开到30*1000*100+5这么大。

  因为下标不可以是小数,那么可以把价格乘以100,把它变成整数。

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
#include<cmath>
#include<vector>
#include<set>
#include<cstdio>
#include<string>
#include<deque>
using namespace std;
typedef long long LL;
#define eps 1e-8
#define INF 0x3f3f3f3f
#define maxn 3000005
/*struct point{
int u,w;
};
bool operator <(const point &s1,const point &s2)
{
if(s1.w!=s2.w)
return s1.w>s2.w;
else
return s1.u>s2.u;
}*/
int n,m,k,t;
double limit,dp[maxn];
int value[];
double A,B,C;//用来记录一张发票里面ABC的总价格
bool jug(char c,double cost)//判断这张发票是否可以报销
{
if(c=='A')
A+=cost;
else if(c=='B')
B+=cost;
else if(c=='C')
C+=cost;
else
return false;
if(cost>||A>||B>||C>)
return false;
return true;
}
int main()
{
while(scanf("%lf%d",&limit,&n))
{
limit*=;
if(n==)
break;
fill(value,value+,INF);
int num;
double sum,cost;
char c;
for(int i=;i<=n;i++)
{
scanf("%d",&num);
sum=;
A=,B=,C=;
while(num--)
{
getchar();
scanf("%c:%lf",&c,&cost);
if(sum!=INF&&jug(c,cost))
{
sum+=cost;
if(sum>)
sum=INF;//如果不行就设为无穷大,表示无法报销
}
else
sum=INF;
}
if(sum!=INF)
{
value[i]=sum*;
}
}
memset(dp,,sizeof(dp));
for(int i=;i<=n;i++)//一维的01背包
{
if(value[i]==INF)
continue;
for(int j=(int)limit;j>=value[i];j--)
dp[j]=max(dp[j],dp[j-value[i]]+value[i]);
}
printf("%.2lf\n",dp[(int)limit]/);
}
return ;
}

01背包 hdu1864的更多相关文章

  1. hdu1864 最大报销额(01背包)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1864 Problem ...

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

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=187#problem/G 该题要注意的就是每张单子A种类的总和不能大与600,同 ...

  3. HDU1864 最大报销额 01背包

    非常裸的01背包,水题.注意控制精度 #include <iostream> #include <algorithm> #include <cstdio> #inc ...

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

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

  5. UVALive 4870 Roller Coaster --01背包

    题意:过山车有n个区域,一个人有两个值F,D,在每个区域有两种选择: 1.睁眼: F += f[i], D += d[i] 2.闭眼: F = F ,     D -= K 问在D小于等于一定限度的时 ...

  6. POJ1112 Team Them Up![二分图染色 补图 01背包]

    Team Them Up! Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7608   Accepted: 2041   S ...

  7. Codeforces 2016 ACM Amman Collegiate Programming Contest A. Coins(动态规划/01背包变形)

    传送门 Description Hasan and Bahosain want to buy a new video game, they want to share the expenses. Ha ...

  8. 51nod1085(01背包)

    题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1085 题意: 中文题诶~ 思路: 01背包模板题. 用dp[ ...

  9. *HDU3339 最短路+01背包

    In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. Appium——主从控制执行

    1.客户端(Eclipse)机器A, 服务端(appium.Genymotion)机器B 2.设置Appium,Server Address为192.168.17.123,重新启动Appium 3.在 ...

  2. python第三方库自动安装脚本

    #python第三方库自动安装脚本,需要在cmd中运行此脚本#BatchInstall.pyimport oslibs = {"numpy","matplotlib&qu ...

  3. beego生成 api 项目 && api 文档

    目标 生成 api 项目,并且自动生成db的mapper.module等:同时生成api文档 操作步骤 1.生成 api 项目,并且自动生成db全表的映射 bee api [projectName] ...

  4. Eclipse集成SonarLint

    https://docs.sonarqube.org/display/PLUG/Writing+Custom+Java+Rules+101

  5. SAFESEH 映像是不安全的

    1.打开该项目的“属性页”对话框 2.然后单击“链接器”--“命令行”,出现如下界面 3.将 /SAFESEH:NO 复制到“其它选项(D)”框中,然后点击应用 返回VS2013,重新编译运行程序即可 ...

  6. jquery下的正反选操作

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Hbase数据读写流程

    From: https://blog.csdn.net/wuxintdrh/article/details/69056188 写操作: Client写入,存入Memstore,Memstore满则Fl ...

  8. deploy service on swarm

    转自:https://www.cnblogs.com/jsonhc/p/7852530.html swarm集群配置完成后,查看一些基本的信息: [root@manager1 ~]# docker-m ...

  9. Indy 10.5.8 for Delphi and Lazarus 修改版(2011)

    Indy 10.5.8 for Delphi and Lazarus 修改版(2011)    Internet Direct(Indy)是一组开放源代码的Internet组件,涵盖了几乎所有流行的I ...

  10. zookeeper和dubbo的关系

    Dubbo建议使用Zookeeper作为服务的注册中心. 1.   Zookeeper的作用:         zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知 ...