传送门

01分数规划板子题啊。

就是简单变形移项就行了。

显然 ∑i=1na[i]∑i=1nb[i]≤k" role="presentation" style="position: relative;">∑ni=1a[i]∑ni=1b[i]≤k∑i=1na[i]∑i=1nb[i]≤k

于是我们二分k。

只需检验:

∑i=1n(a[i]−b[i]∗k)≤0" role="presentation" style="position: relative;">∑ni=1(a[i]−b[i]∗k)≤0∑i=1n(a[i]−b[i]∗k)≤0

代码:

#include<cstdio>
#include<algorithm>
#include<iostream>
#define N 1005
using namespace std;
int n,k;
double c[N],a[N],b[N];
inline bool check(double f){
    double ret=0;
    for(int i=1;i<=n;++i)c[i]=a[i]-b[i]*f;
    sort(c+1,c+n+1);
    for(int i=k+1;i<=n;++i)ret+=c[i];
    return ret>=0;
}
inline int read(){
    int ans=0;
    char ch=getchar();
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
    return ans;
}
int main(){
    while(1){
        n=read(),k=read();
        if(!n&&!k)break;
        for(int i=1;i<=n;++i)a[i]=read();
        for(int i=1;i<=n;++i)b[i]=read();
        double l=0.0,r=1.0;
        while(r-l>1e-10){
            double mid=(l+r)*1.0/2.0;
            if(check(mid))l=mid;
            else r=mid;
        }
        printf("%.0f\n",l*100);
    }
    return 0;
}

2018.09.11 poj2976Dropping tests(01分数规划)的更多相关文章

  1. 2018.09.09 poj2949Word Rings(01分数规划+spfa判环)

    传送门 这题要先巧妙的转化一下. 对于每个字符串,我们把头尾的两个小字符串对应的点连边,边权是这个字符串的长度. 这样最多会出现26*26个点. 这个时候就只用求出边权和跟边数的最大比值了. 这个显然 ...

  2. Dropping tests(01分数规划)

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8176   Accepted: 2862 De ...

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

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

  4. POJ 2976 Dropping tests 01分数规划

    给出n(n<=1000)个考试的成绩ai和满分bi,要求去掉k个考试成绩,使得剩下的∑ai/∑bi*100最大并输出. 典型的01分数规划 要使∑ai/∑bi最大,不妨设ans=∑ai/∑bi, ...

  5. [poj2976]Dropping tests(01分数规划,转化为二分解决或Dinkelbach算法)

    题意:有n场考试,给出每场答对的题数a和这场一共有几道题b,求去掉k场考试后,公式.的最大值 解题关键:01分数规划,double类型二分的写法(poj崩溃,未提交) 或者r-l<=1e-3(右 ...

  6. $POJ$2976 $Dropping\ tests$ 01分数规划+贪心

    正解:01分数规划 解题报告: 传送门! 板子题鸭,,, 显然考虑变成$a[i]-mid\cdot b[i]$,显然无脑贪心下得选出最大的$k$个然后判断是否大于0就好(,,,这么弱智真的算贪心嘛$T ...

  7. POJ - 2976 Dropping tests(01分数规划---二分(最大化平均值))

    题意:有n组ai和bi,要求去掉k组,使下式值最大. 分析: 1.此题是典型的01分数规划. 01分数规划:给定两个数组,a[i]表示选取i的可以得到的价值,b[i]表示选取i的代价.x[i]=1代表 ...

  8. 【POJ2976】Dropping tests - 01分数规划

    Description In a certain course, you take n tests. If you get ai out of bi questions correct on test ...

  9. POJ2976 Dropping tests(01分数规划)

    题意 给你n次测试的得分情况b[i]代表第i次测试的总分,a[i]代表实际得分. 你可以取消k次测试,得剩下的测试中的分数为 问分数的最大值为多少. 题解 裸的01规划. 然后ans没有清0坑我半天. ...

随机推荐

  1. leetcode7

    public class Solution { public int Reverse(int x) { ; ) { fuhao = -; } try { x = Math.Abs(x); } catc ...

  2. Star打印机数据解密

    通过串口调试工具 抓取到的16进制文本; 如下 然后打开我们的文档,查看命令数据内容. 详情请密我QQ:1161588342  说明加好友原因

  3. How to Pronounce INTERNATIONAL

    How to Pronounce INTERNATIONAL Share Tweet Share Tagged With: Dropped T How do you pronounce this lo ...

  4. python-股票数据定向爬取

    re.findall soup.find_all ---------Q---- for i in ***: ***可以是什么类型,主要是关心什么类型的不可以 ------------trackback ...

  5. 常用类一一MATH类一一两个静态常量PI 和E,一些数学函数。

    package test; public class MathTest { public static void main(String[] args) { System.out.println(Ma ...

  6. Genetics in geographically structured populations: defining, estimating and interpreting FST

    摘要:Wright’s F‑statistics, and especially FST, provide important insights into the evolutionary proce ...

  7. bootstrap下拉框的例子,提示Error: Bootstrap's JavaScript requires jQuery

    bootstrap很多js依赖jquery,所以需要引入jquery   遇到的问题: 页面访问提示:Error: Bootstrap's JavaScript requires jQuery   解 ...

  8. php 下载生成word文件

    方案一 $html2 ='数字'; header("Content-type: application/octet-stream"); header("Accept-Ra ...

  9. 轮播图jQuery

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. linux新安装JDK不生效的问题

    新安装了jdk,但重新连接之后仍然显示老的jdk 1. which java 2. which javac 3. rm -rf /usr/bin/java 4. rm -rf /usr/bin/jav ...