/************************************************************************* > 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; }
时间: 2024-10-12 05:26:53