CF398B
大概是一种很常见的思路。
设 $f_{i,j}$ 表示已经有 $i$ 行 $j$ 列有特殊点。
转移只要考虑是放在了怎样的行列中即可计算出结果。
因为有自环,所以移项消一下即可。
CF605E
设 $f_i$ 表示 $i$ 号节点到 $n$ 的期望时间。
考虑如果有了最终的 $f$ 数组,给所有的节点按照 $f$ 的大小排名。
于是所有的节点只会向排名小于等于它的节点转移,然后转移的系数就是所有排名小于转移点的都没选上的概率。
所以写一个类似最短路的东西,每次确定排名最小的就行了。
trip
可以把黑白点的贡献分开考虑。
对于黑点,经过一次就产生一次贡献,设 $f_i$ 表示从 $i$ 游走到 $n$ 的期望值。
于是可以列出一个转移方程来,用树上高斯消元的方法搞一下就可以简单推出来。
然后对于白点的贡献可以计算到达每个白点的概率,其实把这个点染黑并删掉子树即可转化为上面的问题。
BZOJ5058
考虑直接用期望的线性性,然后可以考虑每对点的贡献。
然后数字 $a_i,a_j$ 可以把整个序列划分为 $i,j$ 和其他位置。
对于所有的其他位置,到达的概率是没有区别的。
然后大概就可以用矩阵快速幂维护。
CF838D
是个见过的方法。考虑新加一个特殊的座位,然后把序列的首尾接在一起变成一个环。
每次仍然是任选一个节点然后任选方向。
有人没座位坐等价于他坐到了特殊的座位上。
因为每个座位都是一样的,所以方案数可以简单计算。
CF396E
保证质数并不大。可以考虑从大到小考虑每个质数。
取一次欧拉函数其实就是给指数 $-1$,然后给 $p-1$ 的每个质因子累加上对应的质数。
暴力迭代前20轮 , 就是说如果当前轮这个质数的次幂不为0,那就迭代一下。
如果对于20轮之后,这个质数的次幂还不为1,那就说明:
第一种情况,20至k轮中,每一轮这个质数都能迭代一次。
第二种情况,20至最多能出现的次数轮中,每一轮这个质数都能迭代一次。
所以分别计算大概就行了。