POJ2976Dropping tests(分数规划)

Posted zzyh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ2976Dropping tests(分数规划)相关的知识,希望对你有一定的参考价值。

传送门

题目大意:n个二元组a[i],b[i],去掉k个,求sigma a[i]/ sigma b[i]的最大值

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 1009
#define LL long long
using namespace std;

LL n,k;

LL a[N],b[N];

double c[N];

inline int read()
{
    register LL x=0,f=1;register char ch=getchar();
    while(ch<0||ch>9) if(ch==-) f=-1,ch=getchar();
    while(ch>=0&&ch<=9)x=x*10+ch-0,ch=getchar();
    return x*f;
} 

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,r=100;
        while(r-l>1e-5)
        {
            double mid=(l+r)/2,p=0;
            for(int i=1;i<=n;i++) c[i]=a[i]-mid*b[i];
            sort(c+1,c+n+1);
            for(int i=n;i>=k+1;i--) p=p+c[i];
            if(p>=0) l=mid;
            else r=mid;
        }
        printf("%.0f
",l*100);
    }
    return 0;
}

 

以上是关于POJ2976Dropping tests(分数规划)的主要内容,如果未能解决你的问题,请参考以下文章

POJ - 2976 Dropping tests (01分数规划)

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

[poj2976]Dropping tests(01分数规划,转化为二分解决)

poj2976 Dropping tests

[POJ2976] Dropping tests

[POJ2976]Dropping tests