解题报告

pid=1864">题目传送门

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define inf 99999999
using namespace std;
int v,w[35],d[4],dw1,sum,dp[31*1000*100];
int main()
{
double Q,dw; int n,i,j,m,t;
char c;
while(~scanf("%lf %d",&Q,&n)) {
m=0;
v=(int)(Q*100);
memset(dp,0,sizeof(dp));
memset(w,0,sizeof(w));
if(!n)break;
for(i=1; i<=n; i++) {
scanf("%d",&t);
sum=0;
int f=0;
memset(d,0,sizeof(d));
for(j=1; j<=t; j++) {
scanf(" %c:%lf",&c,&dw);
dw1=(int)(dw*100);
if(c>='A'&&c<='C') {
d[c-'A']+=dw1;
sum+=dw1;
} else f=1;
}
if(!f&&sum<=100000&&d[0]<=60000&&d[1]<=60000&&d[2]<=60000) {
w[m++]=sum;
}
}
for(i=0; i<m; i++) {
for(j=v; j>=w[i]; j--) {
dp[j]=max(dp[j],dp[j-w[i]]+w[i]);
}
}
printf("%.2lf\n",dp[v]/100.0);
}
}

最大报销额

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 16358    Accepted Submission(s): 4775

Problem Description
现有一笔经费能够报销一定额度的发票。同意报销的发票类型包含买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元。每张发票上。单项物品的价值不得超过600元。

现请你编敲代码,在给出的一堆发票中找出能够报销的、不超过给定额度的最大报销额。

 
Input
測试输入包括若干測试用例。

每一个測试用例的第1行包括两个正数 Q 和 N。当中 Q 是给定的报销额度,N(<=30)是发票张数。随后是 N 行输入,每行的格式为:

m Type_1:price_1 Type_2:price_2 ... Type_m:price_m

当中正整数 m 是这张发票上所开物品的件数,Type_i 和 price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文字母表示。

当N为0时。所有输入结束,对应的结果不要输出。

 
Output
对每一个測试用例输出1行,即能够报销的最大数额。精确到小数点后2位。
 
Sample Input
200.00 3
2 A:23.50 B:100.00
1 C:650.00
3 A:59.99 A:120.00 X:10.00
1200.00 2
2 B:600.00 A:400.00
1 C:200.50
1200.50 3
2 B:600.00 A:400.00
1 C:200.50
1 A:100.00
100
posted @
2017-05-26 08:18 
llguanli 
阅读(...) 
评论(...) 
编辑 
收藏

markdown_highlight();

var allowComments = true, cb_blogId = 348872, cb_blogApp = 'llguanli', cb_blogUserGuid = '71afffa6-ae21-e711-9fc1-ac853d9f53cc';
var cb_entryId = 6906761, cb_entryCreatedDate = '2017-05-26 08:18', cb_postType = 1;
loadViewCount(cb_entryId);
loadSideColumnAd();

var commentManager = new blogCommentManager();
commentManager.renderComments(0);

var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];

googletag.cmd.push(function () {
googletag.defineSlot("/1090369/C1", [300, 250], "div-gpt-ad-1546353474406-0").addService(googletag.pubads());
googletag.defineSlot("/1090369/C2", [468, 60], "div-gpt-ad-1539008685004-0").addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});

fixPostBody();
deliverBigBanner();
setTimeout(function() { incrementViewCount(cb_entryId); }, 50); deliverAdT2();
deliverAdC1();
deliverAdC2();
loadNewsAndKb();
loadBlogSignature();
LoadPostCategoriesTags(cb_blogId, cb_entryId); LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid);
GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate, cb_postType);
loadOptUnderPost();
GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);

最新文章

  1. android:layout_weight的真实含义(转)
  2. JavaScript学习10 JS数据类型、强制类型转换和对象属性
  3. 【XLL 框架库函数】 Excel/Excel12f
  4. 转: javascript实现全国城市三级联动菜单代码
  5. Urlencode and Urldecode 命令行
  6. 客户端显示Not yet reported
  7. sql学习资料
  8. 放爬虫nginx
  9. 13 hbase连接
  10. 【Linux命令】命令行查找文件并进行操作
  11. EasyUI - SplitButton 分割按钮
  12. Java 之Integer相等比较
  13. mysql主从复制原理探索
  14. APP偏移地址
  15. webpack(4)-管理输出
  16. Python_02
  17. 关于Java数据转存的中MultipartFile转File的问题(转)
  18. 我所理解Java集合框架的部分的使用(Collection和Map)
  19. jsp大学作业:jsp编写单选,复选判断题及得分情况
  20. 团队week9

热门文章

  1. Java中文乱码处理
  2. JAVA基础——生产者消费者问题
  3. [实现] 利用 Seq2Seq 预测句子后续字词 (Pytorch)
  4. MySQL 日志初探
  5. Codeforces450 B. Jzzhu and Sequences
  6. PHP:车牌照合法性
  7. (八)python3 迭代
  8. LeetCode(70) Climbing Stairs
  9. 使用JS对form的内容验证失败后阻止提交
  10. oracle spool