【题目链接】  http://poj.org/problem?id=2976

【题目大意】

  给出每门成绩的总分和得分,去除k门成绩之后
  使得剩余的成绩分数和除以总分得到的数字最大,要求精度在三位小数之内四舍五入到整数

【题解】

  如果答案是x,那么必有选取的几门课程sigma(a*100)>=sigma(b*x)
  至于选取,就可以根据a*100-b*x排序,贪心选取即可。
  对于最后的精度处理问题,只要将数据放大处理末尾即可。

【代码】

  1. #include <cstdio>
  2. #include <algorithm>
  3. using namespace std;
  4. const int N=1010;
  5. struct data{long long a,b;}p[N];
  6. int n,m,k;
  7. bool cmp(data a,data b){return a.a*1000000-a.b*m>b.a*1000000-b.b*m;}
  8. bool check(int x){
  9. m=x;
  10. sort(p+1,p+n+1,cmp);
  11. long long cnt=0;
  12. for(int i=1;i<=k;i++)cnt+=p[i].a*1000000-p[i].b*x;
  13. return cnt>=0;
  14. }
  15. int main(){
  16. while(~scanf("%d%d",&n,&k),n+k){
  17. k=n-k;
  18. for(int i=1;i<=n;i++)scanf("%lld",&p[i].a);
  19. for(int i=1;i<=n;i++)scanf("%lld",&p[i].b);
  20. int l=0,r=1000000,ans;
  21. while(l<=r){
  22. int mid=(l+r)>>1;
  23. if(check(mid))l=mid+1,ans=mid;
  24. else r=mid-1;
  25. }printf("%d\n",ans/10000+(ans%10000>=5000));
  26. }return 0;
  27. }

  

POJ 2976 Dropping tests(二分答案)的更多相关文章

  1. POJ 2976 Dropping tests (二分+贪心)

    题意:给定 n 个分数,然后让你去年 m 个分数,使得把剩下的所有的分子和分母都相加的分数最大. 析:这个题并不是分子越大最后结果就越大,也不是整个分数越大,最后结果就越大的,我们可以反过来理解,要去 ...

  2. POJ 2976 Dropping tests [二分]

    1.题意:同poj3111,给出一组N个有价值a,重量b的物品,问去除K个之后,剩下的物品的平均值最大能取到多少? 2.分析:二分平均值,注意是去除K个,也就是选取N-K个 3.代码: # inclu ...

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

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

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

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

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

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

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

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

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

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

  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(01分数规划)

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

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

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

随机推荐

  1. Yii在nginx下多目录rewrite

    开发过程中,在root下有多个程序,采用一个域名,以目录的形式访问,可以采用如下的方法进行url重写: rewrite ^(\/[^\/]+)(.*) $1/index.php$2 last; 意为取 ...

  2. mysql 主键自增

    比如创建表格,表格ID需要自增 将ID设置成主键,并配置auto_increment 例: create table test( id  int(4)  not null  primary key   ...

  3. ASP.NET Request.QueryString 出现乱码问题

    前台: var txing = $("#txing").combobox("getValues"); .......... &tixing=" ...

  4. 做为一个Java程序员,你需要哪些傍身的技能?

    最近总有些断断续续的思考,想想从我入行以来,我到底学会了什么,做成过什么,以后要做什么,如何提升自己······· 工作3年了,常听人说3年,5年,10年是程序员的坎,每过一个都会有新的想法,新的改变 ...

  5. Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug

    解决方案: http://www.javatang.com/archives/2013/06/19/2701909.html

  6. 关于GPS偏移的基础知识

    转载地址 我们平时用到的地球坐标系统,叫做WGS84坐标,国家保密插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照几行代码的算法,将真实的坐标加密成虚假的坐标, ...

  7. bzoj2719[Violet 4]银河之星

    Description Input Output 一道坑爹的搜索……题意是可以往任意方向移动3格,或者如果旁边有格子的时候可以越过它移动,然后把它吃掉.要求吃到最后一个的位置在x0,y0 注意到可以越 ...

  8. BMP彩色转成黑色二值图

    一天半把彩色bmp转成黑白了. 原理是: 第一步:读出位图数据的偏移位置:即第11个字节,用fseek即可. 然后将偏移位置之前的数据全部写入新的bmp图中. 第二步:用fseek移到位图数据这前,判 ...

  9. C语言运算符的优先级

    熟悉C语言的同学都知道,C语言众多的运算符及繁琐难记的优先级总是搞得我们这些C初学者头大.那么本文就 对C语言中所有的运算符进行汇总,并对其优先级进行一定的介绍. 这里虽然对所有C运算符的优先级进行了 ...

  10. CentOS bridge br0 kvm libvirt-xml

    1,kvm bridge br0配置文件内容实例: ifcfg-em1配置文件内容Example: DEVICE=em1 Bridge=br0 TYPE=Ethernet onboot=yes NM_ ...