P15465 [ICPC 2024 WF] Bingo for the Win! 宾果游戏的胜利!
不难发现,对于一个号码,只有拿到这个号码的反应最慢的人才会产生贡献,贡献为 ,其中 表示号码的个数,所以这启示我们在统计答案是从反应慢的开始遍历到反应快的(也就是编号从大到小)。
对于每个人,每个号码对其产生贡献的概率是互斥的,所以直接加法定理加起来就行。
代码:
C++
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int n,k;
int a[N][N],ans[N];
map<int,int> sum;
signed main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) for(int j=1;j<=k;j++) scanf("%d",&a[i][j]),sum[a[i][j]]++;
for(int i=n;i>0;i--) for(int j=1;j<=k;j++) if(sum[a[i][j]]) ans[i]+=sum[a[i][j]],sum[a[i][j]]=0;
for(int i=1;i<=n;i++) printf("%.6f\n",ans[i]*1.0/(n*k));
return 0;
}

Comments NOTHING