hdu1864 最大报销额(DP)
来源:互联网 发布:java sleep 用法 编辑:程序博客网 时间:2024/05/11 19:14
思路:简单DP
#include <iostream>#include <iomanip>#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;double c[32];//存每张合法发票的价值double k[3];//寸每张发票A,B,C种类物品的价值double q;int n,m;char a,b;//a为输入的大写字母,b为“:”double price;//输入的价值int dp[3100000];int main(){ while(cin>>q>>n&&n) { int count=0; for(int i=1;i<=n;i++) { k[0]=k[1]=k[2]=0;//ABC三种每种的总价值初始化 cin>>m; double sum=0; bool ok=1; for(int j=1;j<=m;j++) { cin>>a>>b>>price; sum+=price; if(a!='A'&&a!='B'&&a!='C')//还有其它大写字母 { ok=0; continue; } k[a-'A']+=price;//每张发票上某一种类的总价值 if(sum>1000||k[a-'A']>600) ok=0; } if(ok)//符合题意的发票 c[count++]=sum; } memset(dp,0,sizeof(dp)); int maxn=(int)(q*100); for(int i=0;i<count;i++)//01背包部分,每个数据扩大100倍化为整型处理 for(int j=maxn;j>=(int)(c[i]*100);j--) { if(dp[j]<dp[j-(int)(c[i]*100)]+(int)(c[i]*100)) dp[j]=dp[j-(int)(c[i]*100)]+(int)(c[i]*100); } cout<<setiosflags(ios::fixed)<<setprecision(2)<<double(dp[maxn]/100.0)<<endl; } return 0;}
0 0
- hdu1864最大报销额(dp)
- hdu1864 最大报销额(DP)
- 【DP(背包)】 hdu1864 最大报销额
- hdu1864(最大报销额 DP动态规划)
- hdu1864 最大报销额
- hdu1864最大报销额
- hdu1864 最大报销额
- hdu1864 最大报销额
- HDU1864----最大报销额
- hdu1864 最大报销额
- hdu1864 最大报销额
- hdu1864 最大报销额
- hdu1864最大报销额
- HDU1864 最大报销额
- HDU1864最大报销额
- HDU1864:最大报销额
- hdu1864 最大报销额
- hdu1864 最大报销额(01背包)
- nyoj 16 矩形嵌套 (DAG上的DP)
- 报错 Error:Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradl
- android动画入门
- 解决PullToRefreshListview上拉加载更多listview.setSlection()位置错误办法
- Mysql的游标cursor
- hdu1864 最大报销额(DP)
- 25个经典的Spring面试问答
- 并发容器CopyOnWrite
- Android之Service与IntentService的比较
- Android双击back键退出程序
- Hive学习笔记四:浅入
- vba打包
- 上拉加载下拉刷新 PullToRefresh
- 选择排序