(最大化平均值)poj2976,Dropping tests
来源:互联网 发布:阿里云代码托管 收费 编辑:程序博客网 时间:2024/05/21 08:49
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 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 15 0 25 1 64 21 2 7 95 6 7 90 0
Sample Output
83100
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
<pre name="code" class="cpp">#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1005;const double eps = 1e-5;typedef long long LL;int N, K;double a[maxn], b[maxn];double c[maxn];double ub, lb, ans;bool cmp(double a, double b){ return a > b; }bool judge(double x){for (int i = 1; i <= N; i++)c[i] = a[i] - b[i] * x / 100;sort(c + 1, c + 1 + N, cmp);double res = 0;for (int i = 1; i <= N - K; i++)res += c[i];return res >= 0;}void solve(){lb = 0; ub = 100;ans = 0;//注意,这里的初始化是必要的,理论上当mid=0时仍能得出正确结果;但是实质这里在ub>lb+eps的条件下,mid=(lb+ub)/2在mid取到0之前,while循环就结束了。while (ub > lb + eps){double mid = (lb + ub) / 2;if (judge(mid)){lb = mid;ans = mid;}elseub = mid;}printf("%.0lf\n", ans);}int main(){//freopen("f:\\input.txt", "r", stdin);while (scanf("%d%d", &N, &K)&&!(N==0&&K==0)){for (int i = 1; i <= N; i++) scanf("%lf", &a[i]);for (int i = 1; i <= N; i++) scanf("%lf", &b[i]);solve();}return 0;}
- (最大化平均值)poj2976,Dropping tests
- POJ2976 Dropping tests 最大化平均值(二分)
- poj2976 Dropping tests(二分法:最大化平均值)
- POJ2976-Dropping tests-最大化平均值
- POJ2976 Dropping tests (最大化平均值/二分)
- POJ2976————Dropping tests(二分法,最大化平均值)
- POJ 2976 Dropping tests (最大化平均值)
- POJ2976:Dropping tests(二分法)
- POJ - 2976 Dropping tests(二分搜索:最大化平均值)
- POJ - 2976 Dropping tests(二分查找,最大化平均值)
- POJ 2976 Dropping tests(二分查找 最大化平均值)
- POJ 2976 Dropping tests(最大化平均值)
- poj 2976 Dropping tests(最大化平均值)
- POJ 2976 Dropping tests 【二分:最大化平均值】
- [POJ2976]Dropping tests(01分数规划)
- poj2976 Dropping tests(二分答案)
- [二分]poj2976 Dropping tests
- POJ2976--Dropping tests
- 创建一个完整的CCS工程(基于F2812)
- bootstrap在线设计,快速定制自己的网站!
- java 前台页面传到后台 乱码解决方案
- shopex虚拟分类后台不更新前台能更新问题
- An error was encountered while running(Domain=LaunchSerivcesError, Code=0)
- (最大化平均值)poj2976,Dropping tests
- PHP底层实现
- 转载大神IOS开发系列【16】--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook
- 数据库变量绑定
- 汉化软件Radialix 3的使用
- Linux 升级内核步骤和方法
- Coin Change(UVA 674)
- ORA-12638: 身份证明检索失败 的解决办法
- poj 2001 Shortest Prefixes