首先离散化。
考虑一个简单 O(n2) 树形 DP:设 fu,i 表示 u 取到 i 的概率,l,r 分别为 u 的左 / 右儿子。
那么有 fu,i=fl,i[pui−1∑j=1fr,j+(1−pu)m∑j=i+1fr,j]+fr,i[pui−1∑j=1fl,j+(1−pu)m∑j=i+1fl,j] 前后缀和优化即可。
事实上,这种形式的转移可以使用线段树合并来优化(即所谓「整体 DP」)。
由于没有相同值,合并到最后一定只剩一边非空。
在线段树合并的过程中不难算出两棵线段树上目前的前后缀和,直接打上乘法标记即可。
另外,10−4≡796898467(mod998244353)。
代码:
1 |
|