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

  题目大意:给定n个二元组(a,b),扔掉k个二元组,使得剩下的   最大。

  这两天一直在搞分数规划,有了前两道题(3621、2728),这道题就是完完全全的大水题了。

  设 r=100*∑(ai)/∑(bi) ,有

    100*∑(ai)-r*∑(bi)=0

    ∑(100*ai-r*bi)=0

  这个东西是单调的……

  我们可以将每个二元组的得分设为100*a-r*b,然后从大到小排序,取前n-k个得分求和(sum)。若sum>0则说明r还不够大,可以向上二分;反之向下二分……

  我最讨厌精度什么的了……尤其是C++的精度……

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#define eps 1e-4
using namespace std;double score[1005];
int a[1005],b[1005],n,k;
bool cmp(double a,double b){return a>b;}int main(){while(scanf("%d%d",&n,&k),n+k){for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++) scanf("%d",&b[i]);double low=0,high=100,mid;while(high-low>eps){mid=(low+high)/2.0;for(int i=1;i<=n;i++) score[i]=a[i]*100.0-b[i]*mid;sort(score+1,score+n+1,cmp);double sum=0;for(int i=1;i<=n-k;i++) sum+=score[i];if(sum>0) low=mid;else high=mid;}cout<<(int)(low+.5)<<endl;}return 0;
}

  

转载于:https://www.cnblogs.com/Delostik/archive/2011/07/28/2119404.html

POJ 2976 Dropping Tests相关推荐

  1. poj 2976 Dropping tests 01分数规划

    题目大意: http://poj.org/problem?id=2976 题解: 裸的01分数规划 #include <cstdio> #include <cstring> # ...

  2. POJ 2976 Dropping tests【二分 最大化平均值】

    题意:定义最大平均分为 (a1+a2+a3+---+an)/(b1+b2+---+bn),求任意去除k场考试的最大平均成绩 和挑战程序设计上面的最大化平均值的例子一样 判断是否存在x满足条件 (a1+ ...

  3. Dropping tests

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

  4. Bailian4145 放弃考试 POJ2976 ZOJ3068 Dropping tests【二分法+01分数规划】

    4145:放弃考试 总时间限制: 1000ms 内存限制: 65536kB 描述 在一门课程中,一共有n场考试.假如你在i场考试中可以答对bi道题中的ai道,那么你的累计平均分定义为:100·Σai/ ...

  5. 二分+01分数规划+最大化平均值 Dropping tests POJ - 2976

    题意: 给你若n个分数,分子a[i]a[i]a[i],分母b[i]b[i]b[i],使满足公式100⋅∑i=1nai∑i=1nbi100\cdot\tfrac{\sum_{i=1}^{n} a_{i} ...

  6. 【POJ - 2976】【ZOJ - 3068】【SCU - 2992】Dropping tests (01分数规划)

    题干: In a certain course, you take n tests. If you get ai out of bi questions correct on test i, your ...

  7. Divide and conquer:Dropping tests(POJ 2976)

    最大化平均值 题目大意:给定你n个分数,从中找出k个数,使∑a/∑b的最大值 这一题同样的也可以用二分法来做(用DP会超时,可见二分法是多么的实用呵!),大体上是这样子:假设最大的平均值是w,那么题目 ...

  8. POJ-2976 Dropping tests 01分数规划

    题目链接:http://poj.org/problem?id=2976 很典型的01分数规划,sort+二分即可.注意精度问题,这种四舍五入的问题一般都是两种处理方法:1.printf("% ...

  9. POJ2976:Dropping tests——题解

    http://poj.org/problem?id=2976 题目大意:给定n个二元组(a,b),从中取n-k个,使得100*∑a/∑b最大. 01分数规划裸题,设λ是小于等于最优解的,那么λ< ...

最新文章

  1. nova ERROR (ClientException): 解决方法
  2. LeetCode Merge k Sorted Lists 解决报告
  3. java 面试什么是类_Java 面试题代码类收集
  4. 杭电1437 天气情况
  5. vscode npm install下载权限问题解决
  6. [bzoj1042] [HAOI2008]硬币购物
  7. HDU 6096 树套树
  8. 教你给视频画面打马赛克
  9. Pycharm安装scrapy以及初始化爬虫项目
  10. python小学口算题库生成器_PrimarySchoolMathematics
  11. Graph Convolutional Tracking
  12. so库方法的调用过程
  13. 17年App Store最新官方审核指南
  14. EEPROM,NAND,NOR,QSPI FLASH的区别
  15. 3D建模技巧:如果想用好ZBrush,必须知道这10点!
  16. FPGA开发常用软件的安装
  17. (转载)视频采集学习笔记
  18. VMware workstation搭建华为FusionCompute实验环境(二)保姆级安装教程,可运行虚拟机
  19. python 动态仪表盘_利用EXCEL的power pivot+切片器制作动态仪表盘
  20. SQL Server 2016详细安装步骤,后附链接

热门文章

  1. 《Java8实战》笔记(08):重构、测试和调试
  2. 禅道备份功能_更新禅道燃尽图及数据备份
  3. Linux加密框架 crypto算法模板 以及HMAC算法模板实例
  4. Linux 时间函数的使用
  5. Python学习17 Turtle库绘图
  6. 面试中如何剔除“鱼目混珠”程序员?
  7. 程序员的恶性循环 !
  8. 开源代码的使用 二次开发
  9. cygwin/gcc与MinGW
  10. 如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器