Time Limit: 1000MS
Memory Limit: 65536K

Total Submissions: 13849
Accepted: 4851

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 ≤ aibi ≤ 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

  1. 3 1
  2. 5 0 2
  3. 5 1 6
  4. 4 2
  5. 1 2 7 9
  6. 5 6 7 9
  7. 0 0

Sample Output

  1. 83
  2. 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).

【翻译】给出n个物品,每个物品有两个值a和b,选择n-k个元素,询问的最大值。

题解:

        ①题目要求求出Sigma式子的最大值,可以考虑单个式子ai/bi的最大值,然后将它们合起来。

        ②但是直接计算是不方便转化的,因为Sigma和单个式子还是有区别的。

        ③由于具有取值上的单调性,因此考虑二分,二分最大值x,那么则有:

                 ∑ai/∑bi>=x      移项得到:   ∑ai>=x*∑bi ——> ∑ai-x*∑bi>=0

        ④所以就二分啊,使得x不断变大,大到使得∑ai-x*∑bi几乎等于0,就是最有解了。

  1. #include<stdio.h>
  2. #include<algorithm>
  3. #define go(i,a,b) for(int i=a;i<=b;i++)
  4. #define ro(i,a,b) for(int i=a;i>=b;i--)
  5. int n,k,a[4001],b[4001];
  6. double T[4001],res,l,r,M;
  7. bool check(double x)
  8. {
  9. go(i,1,n)T[i]=a[i]-x*b[i];std::sort(T+1,T+1+n);res=0;
  10. go(i,k+1,n)res+=T[i];return res>=0;
  11. }
  12. int main()
  13. {
  14. while(scanf("%d%d",&n,&k),n|k)
  15. {
  16. go(i,1,n)scanf("%d",a+i);l=0;
  17. go(i,1,n)scanf("%d",b+i);r=1;
  18. while(r-l>1e-6)M=(l+r)/2,check(M)?l=M:r=M;printf("%.0f\n",l*100);
  19. }
  20. }//Paul_Gudeiran

 

希望你把我记住你流浪的孩子,无论在何时何地我都想念着你。————汪峰《我爱你中国》

【POJ 2976 Dropping tests】的更多相关文章

  1. POJ - 2976 Dropping tests && 0/1 分数规划

    POJ - 2976 Dropping tests 你有 \(n\) 次考试成绩, 定义考试平均成绩为 \[\frac{\sum_{i = 1}^{n} a_{i}}{\sum_{i = 1}^{n} ...

  2. 二分算法的应用——最大化平均值 POJ 2976 Dropping tests

    最大化平均值 有n个物品的重量和价值分别wi 和 vi.从中选出 k 个物品使得 单位重量 的价值最大. 限制条件: <= k <= n <= ^ <= w_i <= v ...

  3. POJ 2976 Dropping tests 【01分数规划+二分】

    题目链接:http://poj.org/problem?id=2976 Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  4. POJ 2976 Dropping tests 01分数规划 模板

    Dropping tests   Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6373   Accepted: 2198 ...

  5. POJ 2976 Dropping tests(01分数规划入门)

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11367   Accepted: 3962 D ...

  6. POJ 2976 Dropping tests(01分数规划)

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:17069   Accepted: 5925 De ...

  7. POJ 2976 Dropping tests (0/1分数规划)

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4654   Accepted: 1587 De ...

  8. Poj 2976 Dropping tests(01分数规划 牛顿迭代)

    Dropping tests Time Limit: 1000MS Memory Limit: 65536K Description In a certain course, you take n t ...

  9. poj 2976 Dropping tests 二分搜索+精度处理

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8349   Accepted: 2919 De ...

随机推荐

  1. 在 publicId 和 systemId 之间需要有空格。

    spring  applicationContext_datasource.xml中约束错误 org.springframework.beans.factory.xml.XmlBeanDefiniti ...

  2. js对象动态添加属性,方法

    1. 动态添加属性,方法 var object = new Object(); object.name = "name"; object.age = 19; >>> ...

  3. IDEA的使用方法(二)(代码提示)

    工欲善其事必先利其器: 在eclipse用久了代码提示对自己纯手搓代码还是不太好的,我就算是死,从楼上跳下去,也不会从了IDEA的代码提示的,在手搓了一个hello world之后,我写的是JAVA? ...

  4. Hbase学习指南

    本篇Hbase组件基于CDH5进行安装,安装过程:https://www.cnblogs.com/dmjx/p/10037066.html Hbase简介 HBase是一个高可靠.高性能.面向列.可伸 ...

  5. Leetcode 606. 根据二叉树创建字符串

    题目链接 https://leetcode.com/problems/construct-string-from-binary-tree/description/ 题目描述 你需要采用前序遍历的方式, ...

  6. 笔记-restful

    笔记-restful 1.      restful简介 restful:representational state transfer,简称REST,描述了一个架构样式的网络系统. 值得注意的是RE ...

  7. 笔记-pytho-语法-yield

    笔记-python-语法-yield 1.      yield 1.1.    yield基本使用 def fab(max): n,a,b = 0, 0, 1 while n < max: y ...

  8. Pandas库入门

    pandas库的series类型

  9. 19,Ubuntu安装之python开发

      什么??公司要用Ubuntu(乌班图)?不会用??怎么进行python开发??? 乌班图操作系统下载地址:http://releases.ubuntu.com/18.04/ubuntu-18.04 ...

  10. JSP---JSTL核心标签库的使用

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...