zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    环形进度条
    Angular.js入门(2)
    Angular.js入门(1)
    判断页面是手机访问还是电脑访问
    常见问题lufylegend.js
    JavaScript如何诞生
    管理思维修炼
    CROS+node-basis+ajax
    JavaScript操作cookie
    node-basis(提供nodejs开发的基础包)
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/7932414.html
Copyright © 2011-2022 走看看