P15465 [ICPC 2024 WF] Bingo for the Win! 宾果游戏的胜利!

ooliver 发布于 4 小时前 27 次阅读 OI


AI 摘要

宾果游戏里,你拿到的号码不一定是你的专属好运!最慢响应者才是关键——从反应慢的人开始统计,每个号码的贡献竟然是这样算出来的。

P15465 [ICPC 2024 WF] Bingo for the Win! 宾果游戏的胜利!

不难发现,对于一个号码,只有拿到这个号码的反应最慢的人才会产生贡献,贡献为 sumnk\frac{sum}{nk},其中 sumsum 表示号码的个数,所以这启示我们在统计答案是从反应慢的开始遍历到反应快的(也就是编号从大到小)。

对于每个人,每个号码对其产生贡献的概率是互斥的,所以直接加法定理加起来就行。

代码:

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;
}