0%

ABC-411-E - E [max] 

思路讲解

在竞技编程中,对于求解概率或期望值的问题,通常可以运用以下技巧:与其求某个最大值与某个特定值重合的概率,不如求该最大值小于或等于该特定值的概率。这个技巧也适用于这个问题:

说实话,这个我确实想到了,但是这个想法被我pass了。其实不应该忽视求什么比较容易的想法的,或者说想到了一些可以求的量,应该去想怎么样。

那么注意到那,我们可以先求概率,接着再求期望,那么P(K)表示≤k最大值小于等于K的概率

image

image

这个就是Pk-1和Pk的关系,那么我们现在的重点就是说我们如何快速计算这个,快速完成递推那?

那么这个办法就有很多,我选择是使用优先队列。

AC代码

https://atcoder.jp/contests/abc411/submissions/66998392

心路历程(WA,TLE,MLE……)

没有提交之前WA了几次,其实是因为溢出了,那么我们的binpow模版需要在进入前就对a进行取模。

1
2
3
4
5
6
7
8
9
10
ll binpow(ll a,ll k,const ll &p){	// 迭代快速幂
ll res=1;
a%=mod;
while(k>0){
if((k&1)==1) res=a*res%p;
a=a*a%p;
k>>=1;
}
return res;
}