POJ 2976/ZOJ 3068 Dropping tests 01分数规划
2014-11-24 09:57
363 查看
卡精度的01分数规划...
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
![](http://poj.org/images/2976_1.gif)
.
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
![](http://poj.org/images/2976_3.gif)
. However, if you drop the third test, your cumulative average becomes
![](http://poj.org/images/2976_2.gif)
.
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 n positive 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).
Source
Stanford Local 2005
Dropping tests
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 6464 | Accepted: 2230 |
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
![](http://poj.org/images/2976_1.gif)
.
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
![](http://poj.org/images/2976_3.gif)
. However, if you drop the third test, your cumulative average becomes
![](http://poj.org/images/2976_2.gif)
.
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 n positive 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).
Source
Stanford Local 2005
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; const int maxn=1111; const double eps=1e-8; int n,k; double a[maxn],b[maxn]; double d[maxn]; bool check(double L) { for(int i=0;i<n;i++) { d[i]=a[i]-b[i]*L; } sort(d,d+n); double sum=0.; for(int i=k;i<n;i++) { sum+=d[i]; } if(sum>eps) return true; return false; } int main() { while(scanf("%d%d",&n,&k)!=EOF) { if(n==0&&k==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 low=0,high=1,mid,ans; while(low+eps<high) { mid=(low+high)/2.; if(check(mid)) { low=mid; //ans=mid;这样就WA了 } else high=mid; } //cout<<"ans: "<<ans<<endl; printf("%.0f\n",100*low); } return 0; }
相关文章推荐
- 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分数规划
- POJ 2976 Dropping tests 01分数规划 模板
- POJ 2976- Dropping tests -01分数规划
- POJ 2976-Dropping tests(01分数规划_二分||Dinkelbach算法)
- 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分数规划
- POJ 2976 Dropping tests 01分数规划 模板 二分&&Dinkelbach
- 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分数规划--Dinkelbach算法)
- poj 2976 Dropping tests(基础的01分数规划)