2007年浙江大学计算机及软件工程研究生机试真题
2012-02-26 20:53
405 查看
http://ac.jobdu.com/problem.php?pid=1025 最大报销额
//将题目中数字都扩大100倍变成整数,就可看作经典的01背包问题 //设报销额度为背包上限,可报销支票金额为价格,可报销支票金额为重量 //a[]存的既是价格,又是重量 #include<iostream> #include<cstdio> using namespace std; int a[32]; //存的既是价格,又是重量 const int MAX = 3000005; int f[MAX]; int V; //背包的体积 void ZeroOnePack(int cost, int weight) { int v; for (v = V; v >= cost; v--) f[v] = f[v] > (f[v - cost] + weight) ? f[v] : (f[v - cost] + weight); } int main(void) { int i,j,n,m,k,flag; double q,price,A,B,C; char type; while(scanf("%lf %d",&q,&n)!=EOF) { if(!n) break; k=0; for(i=0;i<n;i++) { scanf("%d",&m); A=B=C=0; flag=0; for(j=0;j<m;j++) { getchar(); scanf("%c:%lf",&type,&price); if(type=='A') A+=price; else if(type=='B') B+=price; else if(type=='C') C+=price; else flag=1; } if(!flag) { if(A+B+C<=1000 && A<=600 && B<=600 && C<=600) //合法的发票 a[k++]=(int)(100*(A+B+C)); } } V=q*100; for(i=0;i<=V;i++) //没有要求把背包装满 { f[i]=0; } for(i=0;i<k;i++) ZeroOnePack(a[i],a[i]); printf("%.2lf\n",f[V]/100.0); } return 0; }
相关文章推荐
- 九度题目1024:畅通工程 2007年浙江大学计算机及软件工程研究生机试真题
- 题目1022:游船出租 2007年浙江大学计算机及软件工程研究生机试真题
- 题目1024:畅通工程 2007年浙江大学计算机及软件工程研究生机试真题
- 题目1023:EXCEL排序 2007年浙江大学计算机及软件工程研究生机试真题
- 2007年浙江大学计算机及软件工程研究生机试真题
- 2007年浙江大学计算机及软件工程研究生机试真题
- 九度题目1020:最小长方形 2007年浙江大学计算机及软件工程研究生机试真题
- 题目1021:统计字符 2007年浙江大学计算机及软件工程研究生机试真题
- 题目1004:Median 2011年浙江大学计算机及软件工程研究生机试真题
- 九度题目1013:开门人和关门人 && 2005年浙江大学计算机及软件工程研究生机试真题
- 2005年浙江大学计算机及软件工程研究生机试真题 A + B 九度 1010
- 九度题目1003:A+B && 2010年浙江大学计算机及软件工程研究生机试真题
- 题目1012:畅通工程(2005年浙江大学计算机及软件工程研究生机试真题)
- 2010年浙江大学计算机及软件工程研究生机试真题 A+B
- 统计同成绩学生人数 2006年浙江大学计算机及软件工程研究生机试真题
- 题目1002:Grading 2011年浙江大学计算机及软件工程研究生机试真题
- 2005年浙江大学计算机及软件工程研究生机试真题并查集UnionFindjava实现
- 2005年浙江大学计算机及软件工程研究生机试真题 -九度题目1013:开门人和关门人
- 1006 ZOJ问题(2010年浙江大学计算机及软件工程研究生机试真题)
- 2008年浙江大学计算机及软件工程研究生机试真题