hdu 1864 dp (0,1背包) 最大报销额
来源:互联网 发布:网络拓扑图素材下载 编辑:程序博客网 时间:2024/05/16 04:52
这道题跟2955的差不多。
不过,这个可以让报销额乘以100,然后,正常的0,1背包了。以报销额为背包,每张发票的总额为价值。
但是,跟2955的思路一样,还可以以发票张数作为背包,以每张发票的总额为价值。
即dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]+v[i]);
最后,在不超过报销额的前提下,找出最大的总价值。。。
我这个,能以0ms,240K AC,但是,真不知道,那些大牛怎么以0ms,0k潇洒而过。。。
泪奔!!!
#include <iostream>using namespace std;float max(float f1,float f2){return f1>f2?f1:f2;}float a[34],dp[34];int main(){// freopen("in.txt","r",stdin);float q;float price;char ch;int n,m;float a1,b1,c1;int k;bool flag;while(scanf("%f %d",&q,&n)&&n){k=-1;flag=true;for(int i=0;i<n;i++){scanf("%d",&m);a1=b1=c1=0;if(flag) k++;a[k]=0;flag=true;for(int j=0;j<m;j++){scanf(" %c:%f ",&ch,&price);if(flag){if(ch!='A'&&ch!='B'&&ch!='C')flag=false;else{if(ch=='A') a1+=price;if(ch=='B') b1+=price;if(ch=='C') c1+=price;if(a1>600.0||b1>600.0||c1>600.0||a[k]>1000.0)flag=false;elsea[k]+=price;}}}}if(flag) k++;for(int i=0;i<=k;i++)dp[i]=0; for(int i=0;i<k;i++)for(int j=k;j>=1;j--)if(dp[j-1]+a[i]<=q)dp[j]=max(dp[j],dp[j-1]+a[i]);double mq=0;for(int i=0;i<=k;i++)if(dp[i]>mq)mq=dp[i]; printf("%.2lf\n",mq);}return 0;}
- hdu 1864 dp (0,1背包) 最大报销额
- HDU 1864 最大报销额(DP,01背包)
- hdu 1864 最大报销额(dp/背包)
- 【DP|01背包】HDU-1864 最大报销额
- HDU 1864 - 最大报销额(DP`01背包)
- hdu 1864 最大报销额01背包dp
- HDU 1864 最大报销额 (dp 01背包)
- hdu 1864 最大报销额 0-1背包
- HDU 1864(最大报销额)基础0-1背包问题
- hdu 1864最大报销额 01背包
- HDU 1864 最大报销额 背包问题
- HDU 1864 最大报销额 (01背包)
- 最大报销额 - HDU 1864 01背包
- hdu 1864 最大报销额 01背包
- HDU 1864 最大报销额(01背包)
- HDU 1864 最大报销额 01背包
- HDU 1864--最大报销额【01背包】
- HDU-1864-最大报销额【01背包】
- OpenGL基础技术讲座--体系结构
- Android的快速开发框架 afinal
- hdu 1559
- 【SBT】[NOI2004] 郁闷的出纳员 cashier
- 深入理解EIGRP
- hdu 1864 dp (0,1背包) 最大报销额
- 一语道破项目管理知识体系五大过程组
- iOS 拨打电话的两种方式
- paip.程序设计--扫号器跑号器结果分类设计
- 一语道破项目管理知识体系九大知识领域
- GUI的一点看法
- Spring的xml配置(implements Controller)
- 一语道破项目管理知识体系42个过程
- 分享android开发过程中用到的一些开源框架