题目链接:https://vjudge.net/problem/HDU-5704
题意:N个人参加比赛(你是其中一个),每个人选取一个正数,你已知其他N-1选取的数字。K为N个人的平均数,M=2/3*K。得到一个小于等于M的最大整数ans,与这个数ans相同的玩家获胜,再从所有获胜的玩家随机选一人。问你该选择什么数字,可以使自己获胜概率最大,求这个概率。
设自己选取的数字为x,可得到一个不等式,解不等式后获得ans,在判断有多少人的数与ans相同,输出1.0/ans,保留两位小数。
#include<bits/stdc++.h> #define maxn 1000010 #define LL long long using namespace std; int a[120]; int main() { int T; while(cin>>T) { while(T--) { int n; cin>>n; int sum=0; for(int i=1;i<n;i++) { cin>>a[i]; sum+=a[i]; } double ans=sum/(1.5*n-1); int ans1=floor(ans); cout<<ans1<<' '; int cnt=1; for(int i=1;i<n;i++) { if(a[i]==ans1) cnt++; } printf("%.2f\n",1.0/cnt); } } return 0; }