定义 g [ x ] [ 0 / 1 / 2 ] g[x][0/1/2] g[x][0/1/2] 为x节点染绿 /红 /蓝 情况下
子树中最多几个点染绿色
类似的 f [ x ] [ 0 / 1 / 2 ] f[x][0/1/2] f[x][0/1/2] 为最少有几个点
考虑问题转化,使用时间倒流,我们发现加边的操作,合理对数不会减少,可以使用差分解决,通过差分枚举中间节点,本质上就是floyd
启发式合并,线段树
现场考虑到了使用拆贡献方法,记录每条边的贡献
贡献的前提就是边两侧的子树上有奇数的选择节点
但是并没有证明出选择最近节点的维护复杂度,所以没有敢写
但其实每个儿子节点只加入一次,其它暴力加入,维护奇数个数即可
原题

被折叠的 条评论
为什么被折叠?



