V. Subtree-换根 DP
Down
$$\text{down}(v)=\prod \limits_{u\ v连边} (\text{down}(u)+1)$$
Up
由于模数不一定质数,不能用除法,因此正着乘一遍,反着乘一遍就好。
1 | void up(int u, int rt) { |
W. Intervals-线段树优化 DP
按右端点从小到大排序,将 $[1,i-1]$ 状态集合里面取个最大值加到该点对应的线段树中,然后把右端点 $=i$ 的区间加入线段树中,表示他能对之前的一些状态产生影响。
1 | int n, m; |