POJ 2976 Dropping tests(二分查找 最大化平均值)

来源:互联网 发布:英文版遗传算法 编辑:程序博客网 时间:2024/05/21 06:50


http://poj.org/problem?id=2976


#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<algorithm>#define N 10005#define INF 0x3f3f3f3fusing namespace std;int n, k;double l, r, mid, a[N], b[N], v[N], s;bool cmp(double x, double y){    return x > y;}bool ok(double x){    for (int i = 0; i < n; i++)        v[i] = a[i] - x * b[i];    sort(v, v+n, cmp);    s = 0;    for (int i = 0; i < (n - k); i++) s += v[i];    if (s >= 0) return true;    else return false;}int main(){    while (~scanf("%d%d", &n, &k) && !(n == 0 && k == 0))    {        for (int i = 0; i < n; i++) scanf("%lf", &a[i]);        for (int i = 0; i < n; i++) scanf("%lf", &b[i]);        l = 0;        r = INF;        for (int i = 0; i < 100; i++)        {            mid = (l + r) / 2;            if (ok(mid)) l = mid;            else r = mid;        }        printf("%.f\n", l*100);    }    return 0;}


0 0