ARC157E XXYX Binary Tree 题解
首先,条件可以抽象为 Y 不能相连,然后:
- 钦定根为
Y,YX的个数加上 \(2\); - 钦定某一个叶子节点为
Y,XY的个数加上 \(1\); - 钦定某一个非叶子非根节点为
Y,YX的个数加上 \(2\),XY的个数加上 \(1\);
根据上面的讨论,YX 的个数一定为偶数,先判掉。
现在问题变成了一个二维的类独立集问题,直接设计 \(f_{u,i,j,0/1}\) 表示 \(u\) 的子树选出一个独立集填 Y 满足 XY 和 YX 个数分别为 \(i,j\) 是否可行,\(u\) 选或者不选。
这个 DP 显然不能过,我们考虑优化。
讨论根是否选,现在变成只有两类物品,并且两类物品对于 XY 的贡献是相同的,设计 \(f_{u,i,0/1}\) 表示 \(u\) 内部的子树选出 \(i\) 个叶子填 Y,能选出来的最大独立集,根据 \(f\) 数组的值可以直接判断是否可以满足条件。
总时间复杂度是 \(O(n^2)\) 的,证明方法是考虑每一对叶子都会被枚举一次。

浙公网安备 33010602011771号