本题也是一个背包的问题,我觉得这道题的核心就是根据精确度将浮点型转化为整型然后利用动态规划进行求解,注意对题意的理解,有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. 39.递归颠倒栈[ReverseStack]

    [题目] 用递归颠倒一个栈.例如输入栈{1, 2, 3, 4, 5},1在栈顶.颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶. [分析] 乍一看到这道题目,第一反应是把栈里的所有元素逐一p ...

  2. Java for LeetCode 200 Number of Islands

    Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surro ...

  3. jsp页面之间传参用el表达式获取

    jsp页面之间传参用el表达式获取 参数方法:${param.参数名} session方法:${session.变量名}

  4. c++流的读写

    std::istream input_stream;//这是一个文件流,想把它写入文件 思路是,先将input_stream流读入一个char* buffer; 然后用std::ofstream将bu ...

  5. opencv学习笔记(二)寻找轮廓

    opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...

  6. Java中ArrayList的自我实现

    对于ArrayList相比大家都很熟悉,它是java中最常用的集合之一.下面就给出它的自我实现的java代码. 需要说明的一点是,它是基于数组创建的.所以它在内存中是顺序存储,对于查找十分的方便. p ...

  7. Xamarin.Android开发实践(十一)

    Xamarin.Android之使用百度地图起始篇 一.前言 如今跨平台开发层出不穷,而对于.NET而言时下最流行的当然还是 Xamarin,不仅仅能够让我们在熟悉的Vs下利用C#开发,在对原生态类库 ...

  8. Java hour 52 Weather

    采用jetty 后,默认的welcome-file-list 配置失效了,直接跳转到了struts2 的control 中去了. <welcome-file-list> <welco ...

  9. PHP生成不重复随机数的方法

    无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地.在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下. 方法一: ...

  10. C++ 学习的网站

    C++入门教程:  http://see.xidian.edu.cn/cpp/biancheng/cpp/rumen/