学习了一下动态DP
问题的来源:
给定一棵 n 个节点的树,点有点权,有 m 次修改单点点权的操作,回答每次操作之后的最大带权独立集大小。
首先一个显然的 O(nm) 的做法就是每次做一遍树形DP(这也是我在noip考场上唯一拿到的部分分),直接考虑如何优化这个东西。
简化一下问题,假如这棵树是一条链,那就变得很简单了,可以直接拿线段树维护矩阵加速。
可是如果每个点不止有一个儿子呢?
我们首先树剖一下。
设 g[i][0]=∑j∈lightsonmax(f[j][0],f[j][1])
g[i][1]=a[i]+∑j∈lightsonf[j][0]
即 g[i]
