Dropping tests

来源:互联网 发布:github源码如何使用 编辑:程序博客网 时间:2024/05/18 23:57

Dropping tests
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 7201 Accepted: 2499

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

分析:二分最大平均值 

code:

<span style="font-size:18px;">#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;const double eps=1e-10;struct node{    double v,w;    double ave;} nodee[1100];int n,k;bool cmp(node a,node b){    return a.ave<b.ave;}int main(){    int i;    while(scanf("%d%d",&n,&k)!=EOF)    {        if(n==0&&k==0)            break;        for(i=0; i<n; i++)            scanf("%lf",&nodee[i].v);        for(i=0; i<n; i++)            scanf("%lf",&nodee[i].w);        double lb=0.0,ub=100.0,sum1;        while(ub-lb>eps)        {            double mid=(lb+ub)/2;            for(int i=0; i<n; i++)                nodee[i].ave=100*nodee[i].v-mid*nodee[i].w;            sort(nodee,nodee+n,cmp);            sum1=0;            for(int i=k; i<n; i++)                sum1+=nodee[i].ave;            if(sum1>0)                lb=mid;            else                ub=mid;        }        printf("%.0f\n",lb);    }    return 0;}</span><span style="font-size:24px;"></span>


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 你已被steam封禁怎么办 武装突袭3被锁定怎么办 绝地求生右下角小地图变大怎么办 ctrl z 误删了怎么办 武装突袭3渴了怎么办 武装突袭3枪卡壳怎么办 玩武装突袭3CPU不好怎么办? 户户通001信号中断怎么办 电脑运行速度特别慢怎么办 win8.1电脑太卡怎么办 电线厂非法战地没拆够怎么办 久笔记本电脑玩彩虹六号卡怎么办 彩虹六号一直建立小队进不去怎么办 小佩喂食器离线怎么办 手机打游戏掉帧怎么办 电脑打游戏掉帧怎么办 武装突袭3太卡怎么办 英语b级考不过怎么办 绝地求生被燃烧瓶烧了怎么办 搜狗输入法打字出现问好怎么办 全民k歌解码失败怎么办 视频声音小怎么办调大 乐视2视频声音小怎么办 录视频声音太小怎么办 显卡装了没反应怎么办 笔记本关闭核显黑屏怎么办 驱动补丁被卸了怎么办 网络驱动被删了怎么办 新装系统网卡没驱动怎么办 核显没有dp口怎么办 苹果7屏幕太小了怎么办 苹果装系统卡住了怎么办 苹果7手机白屏黑苹果怎么办 衣服破了个洞怎么办 黑苹果自带升级怎么办 双显卡都禁用了怎么办 win10优盘识别不出来怎么办 黑苹果无限重启怎么办 水泥地面起砂怎么办?这几招很有用 跟老公没法过了怎么办 胃和肠子有点烂怎么办?