ABC360E Sol || 人类智慧 1.0
CarroT1212 · · 题解
提供一种应该不太一样且码量骤减的人类智慧做法,目前卡长后是 AT 最短解。
设每次选到的两个数为
- 如果
a\neq x 且b\neq x ,那么这轮操作就跟x 没有关系,x 原地不动,概率为\frac{(n-1)^2}{n^2} 。 - 如果
a=b=x ,那么x 同样保持不动,概率为\frac{1}{n^2} 。 - 如果
a=x 或b=x ,那么x 等概率地换到除它以外的任何一个位置,每一位概率都为\frac{2}{n^2} 。
这时我们动用人类智慧:注意到前两种操作结果相同,于是你从第一种操作里随便拿一种情况分给第二种,使第二种操作的概率变成
也就是说,只要
即答案为
ll qp(ll x,ll y=P-2) { return y?(y&1?x:1)*qp(x*x%P,y>>1)%P:1; }
ll n,k,p;
void mian() {
scanf("%lld%lld",&n,&k);
p=qp(((n-1)*(n-1)+P-1)%P*qp(n*n%P)%P,k);
cout<<(p+(1+P-p)*((n+1)*qp(2)%P))%P;
}
感觉自己赛时能想到真是太厉害了。