本题也是一个背包的问题,我觉得这道题的核心就是根据精确度将浮点型转化为整型然后利用动态规划进行求解,注意对题意的理解,有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 触发器实现两个表的数据同步

    mysql通过触发器实现两个表的同步 目前,在本地测试成功. 假设本地的两个数据库a和b,a下有表table1(id, val) b下有表table2(id, val) 假设希望当table1中数据更 ...

  2. linux中pip安装步骤与使用详解

    pip类似RedHat里面的yum,安装软件非常方便.本节详细介绍pip的安装.以及使用方法,希望文章对各位了解pip的安装与使用带来帮助. 1.pip下载安装1.1 pip下载  代码如下 复制代码 ...

  3. Java数据类型和运算符

    一,数据类型分类(2种) 1. 基本数据类型(3种) 数值型: 整数类型(4种): byte(1字节):范围(-128~127): short(2字节):范围(-32768~32767): int(4 ...

  4. [Java] Java 打包成jar包 和 解压jar包

    解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] ...

  5. [MAC] mac系统如何显示和隐藏文件

    转载地址: http://www.cnblogs.com/lm3515/archive/2010/12/08/1900271.html 显示Mac隐藏文件的命令:defaults write com. ...

  6. primace 5.0软件的Debug ware 功能的使用方法简介

    用primace 软件已经一年多了,一直不知道Debug ware 软件怎么使用,上周终于逮住FAE请教了下这个功能的使用方法.发现这个功能和signalTap ii 原理不一样,这个是非时事的波形, ...

  7. IntelliJ IDEA快捷键和常用设置

    一   快捷键的使用       1.文本编辑删除 ctr + y复制 ctr + D2.智能提示提示 ctr + space智能提示 ctr + shift + space完成当前语句 ctr + ...

  8. Tomcat热部署和虚拟目录配置

    1.Tomcat如何配置热部署 默认就是 <Host appBase="webapps" autoDeploy="true" name="loc ...

  9. 在jsfiddle作在线angular测试,蛮有意思的

    jsfiddle.net 快速学知识,比本地自己弄快,当然,不能用于太复杂的应用啦.. 比如:学到directive的scope继承隔离作用域时,就可以这样弄. scope 可选参数,(布尔值或者对象 ...

  10. ytu 1938:首字母变大写(水题)

    首字母变大写 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 110  Solved: 43[Submit][Status][Web Board] Desc ...