码迷,mamicode.com
首页 > 其他好文 > 详细

POJ2976Dropping tests(分数规划)

时间:2019-12-05 01:32:58      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:clu   最大值   lan   i++   ble   algo   int   read   print   

传送门

题目大意: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\n",l*100);
    }
    return 0;
}

 

POJ2976Dropping tests(分数规划)

标签:clu   最大值   lan   i++   ble   algo   int   read   print   

原文地址:https://www.cnblogs.com/zzyh/p/11986543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!