• 最大化平均值


    题目:有n个重量和价值分别为w(i)和v(i)的物品,从中选出k个物品是的单位重量的价值最大。

    输入:n=3 k=2
    (w,v)={(2,2),(5,3),(2,1)}
    输出:0.75(选择0和2)
    一般都会想直接按单位重量的价值排序,然后进行贪心,但是发现这种方法样例都不对!!!还是得好好分析一番啊。

    题解

    #include <iostream>
    
    using namespace std;
    int n,k;
    const int maxn=1000;
    int w[maxn],v[maxn];
    int y[maxn];
    bool check(int x)
    {
        for(int i=0;i<n;i++)
           y[i]=v[i]-x*w[i];
    
        sort(y,y+n,greater<int>);
            double sum=0; 
        for(int i=0;i<k;i++)
        {
            sum+=y[i];
        }
        return sum>=0;
    }
    void solve()
    {
        double lb=0,ub=99999999;
        for(int i=0;i<100;i++)
        {
            double mid=(lb+ub)/2;
            if(check(mid))
                lb=mid;
            else ub=mid;
        }
        printf("%.2f
    ",ub);
    }
    
    
  • 相关阅读:
    php apc缓存以及与redis的对比
    React Refs
    React 表单与事件
    React AJAX
    React 组件生命周期
    React 组件 API
    React Props
    React State(状态)
    react 组件之间传值
    react 创建组件
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387408.html
Copyright © 2020-2023  润新知