OJ_1025 最大报销额
2014-02-15 08:51
253 查看
#include <iostream> #include <stdlib.h> #include <algorithm> #include <iomanip> using namespace std; const int N=31; double sum=0.0; double maxsum=0.0; int visit ; void init(int n) { for(int i=0;i<n;i++) { visit[i]=0; } } int max(int a,int b) { return a>b?a:b; } void func() { double q; int n; while(cin>>q>>n) { if(n==0)break; double a ; for(int i=0;i<n;i++) { int m; cin>>m; a[i]=0.0; bool valid=true; double A,B,C; A=B=C=0.0; for(int j=0;j<m;j++) { double price; char c,d; cin>>c>>d>>price; if (c == 'A') { A += price; }else if (c == 'B') { B += price; }else if (c == 'C') { C += price; }else { valid = false; } } if (valid == true&& A <= 600.00 && B <= 600.00 && C <= 600.00) { double total = A + B + C; if (total <= 1000.00 && total <= q) { a[i]=total; } } } //sort(a,a+n); // init(n); // dfs(a,q,n); int v=(int)(q*100); int dp[v+1]; for(int i=0;i<v+1;i++) { dp[i]=0; } for(int i=0;i<n;i++) { int cost=(int)(a[i]*100); for(int j=v;j>=cost;j--) { dp[j]=max(dp[j],dp[j-cost]+cost); } } cout<<setiosflags(ios::fixed)<<setprecision(2)<<(double)(dp[v]/100.0)<<endl; } } int main(int argc, char *argv[]) { //printf("Hello, world\n"); func(); return 0; }
01背包
题目描述:
现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。
输入:
测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给定的报销额度,N(N<=30)是发票张数。随后是 N 行输入,每行的格式为:
m Type_1:price_1 Type_2:price_2 ... Type_m:price_m
其中正整数 m 是这张发票上所开物品的件数,Type_i 和 price_i 是第 i 项物品的种类和价值。物品种类用一个大写英文字母表示。当N为0时,全部输入结束,相应的结果不要输出。
输出:
对每个测试用例输出1行,即可以报销的最大数额,精确到小数点后2位。
样例输入:
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.00 0
样例输出:
123.50 1000.00 1200.50
相关文章推荐
- 九度oj 题目1025:最大报销额 【ZJU2007考研机试题6】
- 九度OJ 1025:最大报销额 (01背包、DP)
- 九度OJ 1025:最大报销额
- 九度OJ 1025:最大报销额 (01背包、DP)
- 九度OJ 1025 最大报销额(0-1背包)
- 1025.最大报销额
- 九度OJ-1025:最大报销额
- 九度1025:最大报销额 java
- 题目1025:最大报销额(0-1背包问题)
- 题目1025:最大报销额
- 题目1025:最大报销额(动态规划之01背包问题)
- 【杭电oj】1864 - 最大报销额(01背包)
- 【九度】题目1025:最大报销额
- 九度 题目1025:最大报销额 (0/1背包,动态规划)
- 题目1025:最大报销额
- 题目1025:最大报销额(01背包问题)
- 题目1025:最大报销额
- 九度 1025:最大报销额(dfs,dp)
- 1025_最大报销额
- 九度 题目1025:最大报销额