zoukankan      html  css  js  c++  java
  • POJ 2976 裸的01分数规划

    题意:给你n个数对(认为是a数组和b数组吧),从中取n-m个数对,如果选第i个数对,定义x[i]=1,求R=∑(a[i]*x[i])/∑(b[i]*x[i])取得最大值时R的值。输出R*100(保留到整数)
    输入:第一行 n,m。第二行 a数组的值,第三行b数组的值。以n=m=0结束。

    原题:
    这里写图片描述
    这里写图片描述
    这里写图片描述

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <iostream>
    using namespace std;
    int n,m,a[10005],b[10005];
    double c[10005];
    bool cmp(int a,int b)
    {
        return a>b;
    }
    bool judge(double k)
    {
        for(int i=1;i<=n;i++)
        {
            c[i]=a[i]-b[i]*k;
        }
        sort(c+1,c+1+n,cmp);
        double sum=0.0;
        for(int i=1;i<=m;i++)
        {
            sum+=c[i];
        }
        return sum>=0.0;
    }
    int main()
    {
        while(scanf("%d%d",&n,&m)&&(n||m))
        {
            double left=0,right=0x3fffffff;
            m=n-m;
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
            }
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&b[i]);
            }
            for(int i=1;i<=100;i++)
            {
                double mid=(left+right)/2.0;
                if(judge(mid))
                {
                    left=mid;
                }
                else 
                    right=mid;
            }
            left=left*100;
            printf("%.0f
    ",left);
        }
    }
  • 相关阅读:
    面经
    Onedrive云盘程序——OneManager小白设置指南
    Docker 命令
    Linux 命令
    Spring boot 返回参数移除null属性
    Springboot
    正则
    JVM内存模型
    缓冲和缓存的区别
    SpringBoot如何优雅的将静态资源配置注入到工具类中
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532493.html
Copyright © 2011-2022 走看看