• F


    F - Capture

    题链

    题意

    给你两种颜色的物品,有n组,每组有第一种颜色有w个,第二种为d个,每组必须选一种,求最后第一种颜色占的比值不低于K的最少需要选第一种的组数。

    思路

    首先没组都选第一种的话比值为100,(sum = sum_1^nwi)
    那么我们只要求最多可以选多少个第二种,使得(frac{sum - a}{sum - a + b} >= k(a = sum_1^swi,b=sum_1^sbi)),可以化简为$$(1-k)sum>=kb + (1-k)a$$
    这样问题就解决了。

    代码

    // Last Update:2017-11-30 22:18:48
    // author:sjy
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    LL w[100005],d[100005];
    LL c[100005];
    int main(void)
    {
        int n,p;
        while(scanf("%d %d",&n,&p)!=EOF)
        {  LL sum = 0;
           for(int i = 0;i < n;i++)
               scanf("%lld %lld",&w[i],&d[i]),sum += w[i];
           LL k = p,kk = 100-p;
           sum = kk*sum;
           for(int i = 0;i < n;i++)
               c[i] = k*d[i] + kk*w[i];
           sort(c,c+n);
           int m = 0;
           for(int i = 0;i < n;i++)
           {
             if(sum >= c[i])
                 sum -= c[i],m++;
             else break;
           }
           printf("%d
    ",n - m);
        }
        return 0;
    }
    
  • 相关阅读:
    项目总结1--技术
    基于MFC的Opengl实现动画
    vs2010 MFC Opengl实现
    设计模式-状态模式
    设计模式-访问者模式
    设计模式-责任链模式
    设计模式-中介者模式
    设计模式-命令模式
    设计模式-备忘录模式
    设计模式-观察者模式
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/7932414.html
Copyright © 2020-2023  润新知