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;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 如果牛难产了怎么办要 牛难产拉不出来怎么办 老公发现老婆有外遇怎么办 睡眠不好半夜老是醒怎么办 拔完智齿肿了怎么办 拔牙后咽口水疼怎么办 吃了脏东西拉肚子怎么办 微信遇到仙人跳怎么办 牙有裂痕疼应该怎么办 胸罩在学校掉了怎么办 锁屏密码忘记了怎么办 中汇支付不到账怎么办 痘痘毁容烂脸怎么办 我的手机掉了怎么办 公司不给开工资怎么办 我有卵巢老化怎么办呢 老师骂了我,我该怎么办 我的牙齿很难看怎么办 门牙摔了个缺怎么办 鱼身上鱼鳞烂了怎么办 鱼身上发白烂了怎么办 养的鱼身上烂了怎么办 婴儿被蚊虫咬了怎么办 在野外被蚂蚁咬怎么办 娱乐之太帅了怎么办 鞋舌头歪没有孔怎么办 万一吃了母猪肉怎么办 我的手机丢了怎么办 欠了赌债还不起怎么办 车库门前被堵了怎么办 别人车停我车位怎么办 怎么办能防止锁眼被堵 别人堵着我车了怎么办 马桶被排骨堵了怎么办 马桶被刷子堵了怎么办 屎太大马桶堵了怎么办 大便硬马桶堵了怎么办 马桶让大便堵了怎么办 出了月子奶水少怎么办 木瓜没熟切开了怎么办 小孩被蚊虫叮咬红肿怎么办