CodeForces - 1983E

先考虑非特殊球的贡献,由于只会在非特殊球时改变操作人,那么将 \(n-k\) 个非特殊球插入 \(k\) 个特殊球的空中,第偶数个非特殊球会对 \(Bob\) 做贡献,第奇数个会对 \(Alice\) 做贡献。一共有 \(n-k\) 个球,在奇数位的概率为 \(\frac{\lceil\frac{n-k}{2}\rceil}{n-k}\),偶数位的概率位 \(\frac{\lfloor\frac{n-k}{2}\rfloor}{n-k}\),乘上相应的权值即可。

再考虑特殊球的贡献,将特殊球加入非特殊球中,发现特殊球只有放在第偶数个空位会对 \(Bob\) 做贡献,再第奇数个空位会对 \(Alice\) 做贡献,相应的概率分别为 \(\frac{\lceil\frac{n-k+1}{2}\rceil}{n-k+1}\),\(\frac{\lfloor\frac{n-k+1}{2}\rfloor}{n-k+1}\),乘上相应的权值即可。

void Main(){
	int n=rd,k=rd,ansA=0,ansB=0;
	for(int i=1;i<=n;i++)
		v[i]=rd;
	for(int i=1;i<=k;i++)
		ansA=(ansA+(int)ceil((n-k+1)/2.0)*qmi(n-k+1,mod-2)%mod*v[i]%mod)%mod,
		ansB=(ansB+(int)floor((n-k+1)/2.0)*qmi(n-k+1,mod-2)%mod*v[i]%mod)%mod;
	for(int i=k+1;i<=n;i++)
		ansA=(ansA+(int)ceil((n-k)/2.0)*qmi(n-k,mod-2)%mod*v[i]%mod)%mod,
		ansB=(ansB+(int)floor((n-k)/2.0)*qmi(n-k,mod-2)%mod*v[i]%mod)%mod;
	cout<<ansA<<' '<<ansB<<endl;
}
posted @ 2024-07-11 19:30  SmileMask  阅读(11)  评论(0编辑  收藏  举报