本题也是一个背包的问题,我觉得这道题的核心就是根据精确度将浮点型转化为整型然后利用动态规划进行求解,注意对题意的理解,有3种支票是不能够报销的。

我开始照着这个思路进行思考,但是敲出来的第一个代码居然超时了,想了一下没想出来就看了一下别人的代码,感觉上没什么才差别,但是别人的却a掉了。。。希望有哪位朋友能够指点一下。

超时的代码:

#include"iostream"
#include"stdio.h"
#include"cmath"
#include"string.h"
#include"algorithm"
#define mx 10005
using namespace std;
int dp[],flag,b[];
char type;
double money;
int main()
{
double m,suma,sumb,sumc,sum;
int i,j,n,num,k;
while(cin>>m>>n,n)
{
int count=;
int x=(int)(m*);
for(i=;i<=n;i++)
{
cin>>num;
suma=sumb=sumc=sum=;
getchar();
flag=;
for(j=;j<=num;j++)
{
cin>>type;
getchar();
cin>>money;
if(j<num) getchar();
money=(int)(money*);
if(!flag){
if(type=='A')
{
suma+=money;
if(suma>) {flag=;break;}
}
else if(type=='B')
{
sumb+=money;
if(sumb>) {flag=;break;}
} else if(type=='C')
{
sumc+=money;
if(sumc>) {flag=;break;}
}
else {flag=;break;} }
}
sum=suma+sumb+sumc;
if(!flag&&sum<=) b[count++]=sum;
}
memset(dp,,sizeof(dp));
for(i=;i<=count;i++)
{
for(k=x;k>=b[i];k--)
{
if(dp[k]<dp[k-b[i]]+b[i])
dp[k]=dp[k-b[i]]+b[i];
}
}
printf("%.2lf\n",dp[x]/100.0);
}
return ;
}

这里是别人的代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int dp[]={};
int DP( int num[],int count, int sum )
{
memset( dp,,sizeof( dp ) );
for(int i=;i<count; i++)
{
for( int j=sum;j>=num[i];j-- )
{
if( dp[j]<dp[j-num[i]]+num[i] )
dp[j]=dp[j-num[i]]+num[i];
}
}
return dp[sum];
}
int main()
{
int n,num[],m;
double sum,price;
char c;
while( scanf( "%lf%d",&sum,&n ),n )
{
int count=;
while( n-- )
{
scanf( "%d",&m );
int flag=;
int t=,ta=,tb=,tc=;
while( m-- )
{
int x;
scanf( "%*c%c:%lf",&c,&price );
price*=;
x=( int )price;
if( flag== )
{
if((c=='A')||(c=='B')||(c=='C') )
{
if( c=='A' )
if( ( ta+x )<= )
ta+=x;
else flag=;
if( c=='B' )
if( ( tb+x )<= )
tb+=x;
else flag=;
if( c=='C' )
if( ( tc+x )<= )
tc+=x;
else flag=;
}
else flag=;
}
}
t=ta+tb+tc;
if( flag==&&t<= )
num[count++]=t;
}
sum*=;
int t=( int )sum;
printf( "%.2lf\n",(DP( num ,count,t)/100.0 )); }
return ;
}

hdu 最大报销额的更多相关文章

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

    http://acm.hdu.edu.cn/showproblem.php?pid=1864 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...

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

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

  3. HDU 1864 最大报销额(DP)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1864 题目: 最大报销额 Time Limit: 1000/1000 MS (Java/Others) ...

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

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

  5. 【hdu 1864】最大报销额

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

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

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

  7. DP专题训练之HDU 1864 最大报销额

    做DP一定要注意数组的大小,嗯,就是这样~ Description 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过10 ...

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

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

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

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

随机推荐

  1. mysql 恢复备份

    1.在my.cnf 文件中增加以下配置 log-bin=/var/lib/mysql/mysql-binloglog-bin-index = /var/lib/mysql/mysql-binlog 2 ...

  2. 【USACO】packrec

    这道题卡了很久,开始没读清楚题,没看到题目中给的6个组合是仅可能的组合,一直自己想有多少种组合方式.后来才发现,于是就想到写遍历.我想的是,这六种情况下,每个位置摆哪个矩形是不确定的,于是可以对方块的 ...

  3. 原创centos7安装hadoop2.7(转载请注明出处)

    启用ip vi /etc/sysconfig/network-scripts/ifcfg-ONBOOT=yes 编辑DNS /etc/resolv.conf nameserver 114.114.11 ...

  4. Sublime Text 3 破解+ 汉化包

    破解: 第一步:打开主文件搜索十六进制F7D81AC02005 修改1AC0为B001 第二步:搜索 F3FF8BC7E895 修改其中的8BC7为33C0 第三步:过阻拦未注册提示 搜索 0F859 ...

  5. PHP使用七牛云存储之图片的上传、下载、303重定向教程,CI框架实例

    网上关于七牛云存储的教程除了官网上的API文档,其他的资料太少了.研究了下API之后,现在已经能实现图片的上传和下载及上传之后的重定向. http://blog.csdn.net/cqcre/arti ...

  6. Libsvm自定义核函数【转】

    1. 使用libsvm工具箱时,可以指定使用工具箱自带的一些核函数(-t参数),主要有: -t kernel_type : set type of kernel function (default 2 ...

  7. 人生维艰,何不利用开源.NET函数库让工作更轻松

    今天推荐的文章会谈到一些让你工作更轻松的开源.NET函数库. 即使业界有时候认为.NET开源社区不太健康,很多开发团队都更多依赖于微软提供的东西来开发.不过最近在.NET世界中还是诞生了一些优秀和有意 ...

  8. 修改ViewPager调用setCurrentItem时,滑屏的速度

    原文摘自: 修改ViewPager调用setCurrentItem时,滑屏的速度 在使用ViewPager的过程中,有需要直接跳转到某一个页面的情况,这个时候就需要用到ViewPager的setCur ...

  9. kinect学习笔记(一)—— Openni平台的搭建~、

    一.简述         Openni平台是开源的平台,也就是说所有的源代码都可以查询,可以有助于我们对于整个程序框架的学习和理解,相对于微软的SDK,我更倾向于这个平台,但是由于个各种原因,现在这个 ...

  10. jmeter也有loadrunner一样的图像

    一.准备工具 1.JMeterPlugins-Standard-1.4.0.zip下载地址: http://yunpan.cn/c6Dk9tDdj8Lvq  访问密码 4538 2.ServerAge ...