ABC 453 解题报告
ABCD
略。
E
枚举 \(A,B\) 两个组的人数。然后用双指针维护必须在 \(A\),必须在 \(B\),两个都可以在,两个都不可以在的人数。
F
考虑找到一个点,使得其包含叶子最多的子树叶子最少。
对于一种颜色 \(C_i\),我们考虑优先用它涂叶子,因为叶子可以满足的边数显然要多于涂其他点。
有三种边界情况:
- \(C_i=1\):不用它;
- 所有叶子都已经着色:结束这一段;
- 只剩一个叶子未被着色:将根和这个叶子着色;
那么如果不属于上面三种情况之一,那么进行如下操作:
- 找到叶子最多的子树,将其中一个叶子染色;
- 找到异于该子树的子树,将其中一个叶子染色;
- 接下来重复操作一直到出现第二种边界情况或颜色用光。
这么做保证了任意一个叶子都可以在其他子树内找到和它颜色一样的叶子。
对于剩余点随便染。
G
可持久化线段树做操作二、三是模板题。
操作一就是根节点复制版本。

浙公网安备 33010602011771号