最大报销额 hdu
来源:互联网 发布:云房数据研究中心 编辑:程序博客网 时间:2024/04/27 21:16
Description
Input
m Type_1:price_1 Type_2:price_2 ... Type_m:price_m
其中正整数 m 是这张发票上所开物品的件数,Type_i 和 price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文字母表示。当N为0时,全部输入结束,相应的结果不要输出。
Output
Sample Input
200.00 32 A:23.50 B:100.001 C:650.003 A:59.99 A:120.00 X:10.001200.00 22 B:600.00 A:400.001 C:200.501200.50 32 B:600.00 A:400.001 C:200.501 A:100.00100.00 0
Sample Output
123.501000.001200.50
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;//都乘100,为正整数,可以用数组来求值
int dp[3000000];//一维数组开到1000*30*100
int main()
{
float m1;
int m,n;
while(~scanf("%f%d",&m1,&n))
{
if(n==0)break;
m=m1*100;
memset(dp,0,sizeof(dp));
int a[50]= {0};
char a2;//字符
float a1;//小数
int k,a3,b3,c3;//转为正整数
for(int i=1; i<=n; i++)
{
scanf("%d%*c",&k);
a3=b3=c3=0;
for(int j=1; j<=k; j++)
{
scanf("%c:%f",&a2,&a1);
getchar();
if(a2=='A')a3+=(int)(a1*100);
else if(a2=='B')b3+=(int)(a1*100);
else if(a2=='C')c3+=(int)(a1*100);
else
{
a[i]=100009;
}
}
if(a3>60000||b3>60000||c3>60000)a[i]=100009;
a[i]+=a3+b3+c3;
if(a[i]>100000)a[i]=0;
}
for(int i=1; i<=n; i++)//一维数组dp求值
{
for(int j=m; j>=a[i]; j--)
dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
}
printf("%.2f\n",(float)(dp[m])/100.0);
}
return 0;
}
- hdu 最大报销额
- HDU 最大报销额
- 最大报销额 hdu
- HDU 1684 最大报销额
- Hdu 1864 - 最大报销额
- hdu 1864 最大报销额
- hdU 1864 最大报销额
- hdu - 1864 - 最大报销额
- hdu 1864 最大报销额
- HDU-1864-最大报销额
- hdu 1864 最大报销额
- HDU 1864 最大报销额
- HDU--1864 -- 最大报销额
- hdu 1864 最大报销额
- hdu 1864 最大报销额
- HDU 1864 最大报销额
- hdu 1864 最大报销额
- HDU 1864 最大报销额
- 【Service】Service长时间前台运行
- iOS开发 - 协议与代理
- Linux - setup a tftp server
- 淺談auto_ptr
- 【设计模式】## 5、工厂模式 ##
- 最大报销额 hdu
- 趣谈webSocket
- HDU 5818 (多校 7) 模拟
- 二级域名跨域访问
- 通讯线路物理层编码类型总结(NRZ,MLT-3,4B/5B,8B/10B,64B/66B...)
- 点击一列显示其index的三种方法
- javascript 回调函数
- 变量的作用域
- 收集的一些备用资料(1)