这道题的本质就是对每颗子树求 D [ 1 ∼ m ] D[1\sim m] D[1∼m] 出现的概率。
又因为这道题儿子个数 ≤ 2 \leq 2 ≤2 所以统计子树信息很容易想到线段树合并。
然后就是怎么合的问题。本质就是在走到叶子节点的路径上统计 D i D_i Di 的前缀和,这一点可以通过维护子树和来实现,最后就是打一个区间乘法的标记,可以用线段树方便的维护。
时间复杂度 O ( n log n ) O(n\log n) O(nlogn) 。代码和思维难度都比较适中。
这道题的本质就是对每颗子树求 D [ 1 ∼ m ] D[1\sim m] D[1∼m] 出现的概率。
又因为这道题儿子个数 ≤ 2 \leq 2 ≤2 所以统计子树信息很容易想到线段树合并。
然后就是怎么合的问题。本质就是在走到叶子节点的路径上统计 D i D_i Di 的前缀和,这一点可以通过维护子树和来实现,最后就是打一个区间乘法的标记,可以用线段树方便的维护。
时间复杂度 O ( n log n ) O(n\log n) O(nlogn) 。代码和思维难度都比较适中。