2016 China Final E - Bet

/*************************************************************************
    > File Name: E.cpp
    > Author: LyuCheng
    > Created Time: 2017-12-02 20:38
    > Description: 
        题意:有n各队比赛,每个队的赔率是A:B 就是说你下注x元,赢了你会得到
            额外的 B/A*x的钱,问你最多买多少队,能保证哪个队赢,你都会赚钱

        思路:假设每个队下注pi元 那么 segma(pi=0..n)(pi*(1+B/A))>sum
            化简得(segma(pi=0..n)(pi))/sum>segma(pi=0..n)(A/(A+B)) 也就是 
            segma(pi=0..n)(A/(A+B))<1
 ************************************************************************/
#include <bits/stdc++.h>

#define MAXN 123

using namespace std;

int t;
int n;
long double a;
long double b;
long double cnt[MAXN];
int res;

inline void init(){
    res=0;
}

int main(){
    scanf("%d",&t);
    for(int ca=1;ca<=t;ca++){
        printf("Case #%d: ",ca);
        init();
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%Lf:%Lf",&a,&b);
            cnt[i]=(a*1000/(a*1000+b*1000));
        }
        sort(cnt,cnt+n);
        long double s=0;
        for(int i=0;i<n;i++){
            s+=cnt[i];
            if(s>=1) break;
            res++;
        }
        printf("%d\n",res);
    }
    return 0;
}

 

posted @ 2017-12-02 20:56  勿忘初心0924  阅读(254)  评论(0编辑  收藏  举报