Dropping tests--计算方法,01分数规划
2016-12-01 14:15
302 查看
Dropping tests
Description
In a certain course, you take n tests. If you get ai out of bi questions correct on test i, your cumulative average is defined to be
.
Given your test scores and a positive integer k, determine how high you can make your cumulative average if you are allowed to drop any k of your test scores.
Suppose you take 3 tests with scores of 5/5, 0/1, and 2/6. Without dropping any tests, your cumulative average is
. However, if you drop the third test, your cumulative average becomes
.
Input
The input test file will contain multiple test cases, each containing exactly three lines. The first line contains two integers, 1 ≤ n ≤ 1000 and 0 ≤ k < n. The second line contains n integers indicating ai for
all i. The third line contains npositive integers indicating bi for all i. It is guaranteed that 0 ≤ ai ≤ bi ≤ 1, 000, 000, 000. The end-of-file is marked by a test case
with n = k = 0 and should not be processed.
Output
For each test case, write a single line with the highest cumulative average possible after dropping k of the given test scores. The average should be rounded to the nearest integer.
Sample Input
Sample Output
Hint
To avoid ambiguities due to rounding errors, the judge tests have been constructed so that all answers are at least 0.001 away from a decision boundary (i.e., you can assume that the average is never 83.4997).
题目链接:http://poj.org/problem?id=2976
作为poj为数不多的好理解题意的题,题意很好理解,给了你一个式子,让你求他的最大,我就直接排了一下序,好吧,错了,我感觉不对,要考虑每一个数的贡献,但是一直不会考虑,以为排一下序就可以了,但是很明显,wa。网上查了一下,01分数规划经典题,好吧,继续扩充自己的知识面。
放上大牛的链接,本想自己写写题解,但是怎么写都觉的没有大牛好,那就直接把大牛的链接放这
http://www.cnblogs.com/perseawe/archive/2012/05/03/01fsgh.html
讲的很好
代码:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 10257 | Accepted: 3578 |
In a certain course, you take n tests. If you get ai out of bi questions correct on test i, your cumulative average is defined to be
.
Given your test scores and a positive integer k, determine how high you can make your cumulative average if you are allowed to drop any k of your test scores.
Suppose you take 3 tests with scores of 5/5, 0/1, and 2/6. Without dropping any tests, your cumulative average is
. However, if you drop the third test, your cumulative average becomes
.
Input
The input test file will contain multiple test cases, each containing exactly three lines. The first line contains two integers, 1 ≤ n ≤ 1000 and 0 ≤ k < n. The second line contains n integers indicating ai for
all i. The third line contains npositive integers indicating bi for all i. It is guaranteed that 0 ≤ ai ≤ bi ≤ 1, 000, 000, 000. The end-of-file is marked by a test case
with n = k = 0 and should not be processed.
Output
For each test case, write a single line with the highest cumulative average possible after dropping k of the given test scores. The average should be rounded to the nearest integer.
Sample Input
3 1 5 0 2 5 1 6 4 2 1 2 7 9 5 6 7 9 0 0
Sample Output
83 100
Hint
To avoid ambiguities due to rounding errors, the judge tests have been constructed so that all answers are at least 0.001 away from a decision boundary (i.e., you can assume that the average is never 83.4997).
题目链接:http://poj.org/problem?id=2976
作为poj为数不多的好理解题意的题,题意很好理解,给了你一个式子,让你求他的最大,我就直接排了一下序,好吧,错了,我感觉不对,要考虑每一个数的贡献,但是一直不会考虑,以为排一下序就可以了,但是很明显,wa。网上查了一下,01分数规划经典题,好吧,继续扩充自己的知识面。
放上大牛的链接,本想自己写写题解,但是怎么写都觉的没有大牛好,那就直接把大牛的链接放这
http://www.cnblogs.com/perseawe/archive/2012/05/03/01fsgh.html
讲的很好
代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define inf 0x3f3f3f3f #define eps 1e-7 using namespace std; double a[2000]; double b[2000]; double t[2000]; int n,m; double fax(double L){ for(int i=0;i<n;i++){ t[i]=a[i]-L*b[i]; } sort(t,t+n); double ans=0; for(int i=m;i<n;i++){ ans+=t[i]; } return ans; } int main(){ while(~scanf("%d%d",&n,&m)){ if(n+m==0) break; for(int i=0;i<n;i++){ scanf("%lf",&a[i]); } for(int i=0;i<n;i++){ scanf("%lf",&b[i]); } double l=0.0,r=1.0,mid; while(r-l>eps){ mid=(l+r)/2; if(fax(mid)>0) l=mid; else r=mid; } printf("%1.f\n",l*100); } return 0; }
相关文章推荐
- POJ 2976 Dropping tests 01分数规划
- poj 2976 Dropping tests(01分数规划+二分)
- Dropping tests(01分数规划)
- POJ - 2976 Dropping tests(二分 + 01分数规划)
- POJ2976 Dropping tests 01分数规划
- poj 2976 Dropping tests(基础的01分数规划)
- POJ 2976 Dropping tests (01分数规划+二分)
- POJ2976-Dropping tests-01分数规划
- POJ-2976 Dropping tests 01分数规划
- Dropping tests(01分数规划+spfa判断负权还)
- POJ 2976 Dropping tests 01分数规划 模板
- pku 2976 Dropping tests 01分数规划
- POJ 2976 Dropping tests(普通01分数规划)
- POJ_P2976 Dropping tests(01分数规划)
- POJ 2976 Dropping tests 01分数规划
- POJ 2976 Dropping tests 01分数规划
- POJ 2976 Dropping tests (01分数规划)
- POJ 2976 Dropping tests(01分数规划)
- poj-2976 Dropping tests(01分数规划)
- POJ2976 Dropping tests(01分数规划)