P5298 [PKUWC2018]Minimax
2021.10.8 2021.10.8 2021.10.8 重新自己写出这题。
其实不要想太复杂就好了,别忘了看题面。
先给一个提示吧,为什么这题的 D p Dp Dp 不用融斥掉中间的部分,题目已经说出来了:没有重复权值的叶子。
首先考虑对于每一个节点的值最多只有 n 个,所以肯定需要离散化。
之后考虑实际上每一个节点的值都是从其子树的叶子节点中转移过来的。
所以考虑树形 Dp
设 f [ i ] [ j ] f[i][j] f[i][j] 表示在树上点 i i i 其值为 j j j 的概率。
当然是离散化之后的值。
我们考虑转移,根据题意是取 min , max \min, \max min,max 来转移的,所以我们考虑左右两个儿子的大小关系。具体来说就是如果让左边的儿子产生了贡献,右边的儿子的值就一定比左边儿子小 ( 如果是取 min \min min 的话 )。
就可以写出方程
这里设左边的儿子为 l 右边的儿子为 r
f [ i ] [ j ] = f [ l ] [ j ] × ( p i × ∑ k = 1 j − 1 f [ r ] [ k ] + ( 1 − p i ) × ∑ k = j m f [ r ] [ k ] ) + f [ r ] [ j ] × ( p i × ∑ k = 1 j − 1 f [ l ] [ k ] + ( 1 − p i ) × ∑ k = j m f [ l ] [ k ] ) \begin{aligned} f[i][j] &= f[l][j] \times (p_i \times \sum_{k = 1} ^ {j - 1} f[r][k] + (1 - p_i) \times \sum_{k = j} ^ m f[r][k])\\ &+ f[r][j] \times (p_i \times \sum_{k = 1} ^ {j - 1} f[l][k] + (1 - p_i) \times \sum_{k = j} ^ m f[l][k]) \end{aligned} f[i][j]=f[l][j]×(pi×k=1∑j−1f[r][k]+(1−pi)×