hdu 最大报销额
本题也是一个背包的问题,我觉得这道题的核心就是根据精确度将浮点型转化为整型然后利用动态规划进行求解,注意对题意的理解,有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 最大报销额的更多相关文章
- hdu 1864 01背包 最大报销额
http://acm.hdu.edu.cn/showproblem.php?pid=1864 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...
- HDU 1864最大报销额 01背包问题
B - 最大报销额 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- HDU 1864 最大报销额(DP)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1864 题目: 最大报销额 Time Limit: 1000/1000 MS (Java/Others) ...
- HDOJ(HDU).1864 最大报销额 (贪心)
HDOJ(HDU).1864 最大报销额 题意分析 题目有点问题,原题中说的 单项物品的价值不得超过600元 应该是单类物品的价值不能超过600元. 一开始以为是01背包,后来按贪心写过了. 一张一张 ...
- 【hdu 1864】最大报销额
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- HDU 1864 最大报销额 0-1背包
HDU 1864 最大报销额 0-1背包 题意 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上, ...
- DP专题训练之HDU 1864 最大报销额
做DP一定要注意数组的大小,嗯,就是这样~ Description 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过10 ...
- HDU -1864最大报销额(01背包)
这道题属于简单的01背包,但是背包问题还算简单,就是前面的细节处理的时候要注意,题意大致说了三条限制吧 1. 只有a, b, c 三种类型的发票可以报销,其它的一律不报销 2. 物品单项的报销额不超过 ...
- hdu 1864 最大报销额【01背包】
题目链接:https://vjudge.net/problem/HDU-1864 题目大意: 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求 ...
随机推荐
- Web Components之Custom Elements
什么是Web Component? Web Components 包含了多种不同的技术.你可以把Web Components当做是用一系列的Web技术创建的.可重用的用户界面组件的统称.Web Com ...
- Python -- BeautifulSoup的学习使用
BeautifulSoup4.3 的使用 下载和安装 # 下载 http://www.crummy.com/software/BeautifulSoup/bs4/download/ # 解压后 使用r ...
- Heap:左式堆的应用例(任意序列变单调性最小价值)
首先来说一下什么是左式堆: A:左式堆是专门用来解优先队列合并的麻烦(任意二叉堆的合并都必须重新合并,O(N)的时间). 左式堆的性质: 1.定义零路经长:节点从没有两个两个儿子节点的路经长,把NUL ...
- 解决 Eclipse “alt+/”快捷键 无效
解决方案: 1. 检查windows ——preferences ——java ——editor —— content assist - advanced,在右上方有一行“select the pro ...
- callsession新功能版
可以getopt解析参数. 也实现了将参数用空格分隔,来传给进程. 注意string和LPSTR数据类型的转换方法: LPSTR(lpCmdLine.c_str()) #include <win ...
- Java Hour 32 Weather ( 5 ) struts2 – Action class
有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. Hour 32 Struts2 Action 1 将action 映射到 ac ...
- [译]SQL Server 之 查询优化器
因为生成查询计划的代价比较大,所以查询计划将会被缓存. 树形结构 SQL 查询首先被转化为树形结构,每个节点都是一个查询操作.例如: SELECT * FROM Customers C INNER J ...
- Sql server之路 (三)添加本地数据库SDF文件
12月25日 今天搞了半天 添加本地数据库Sdf文件到项目里.总是出现问题. 安装环境 Vs2008 没有安装的环境 1.Vs2008 sp1 2. 适用于 Windows 桌面的 Microsoft ...
- PHP自毁程序
<?php // +---------------------------------------------------------------------- // | Kill!! // | ...
- 关于java程序打包为EXE的若干问题
这几天在一个即时通讯系统的打包上,吃尽了苦头,到现在才算解决,现在对遇到的问题进行分析总结. 1.一开始是在export "Runnable JAR file"的时候,弹出了这样的 ...