Uoj139 【UER #4】被删除的黑白树
题意:给出一棵
现在需要把一些节点染成黑色,且使得所有叶节点到根路径上的黑点个数相同。
最大化黑点的个数。
不想搞长剖套路了……
结论 1:若所有的叶节点到根的路径都经过白色节点,那么一定存在另一种更优的染色方案。
构造:向下 dfs 时碰到白色节点将其染成黑色并停止。
结论 2:若最浅的叶节点到根的路径经过白色节点,那么所有的叶节点到根的路径都经过白色节点。
证明:所有叶节点与最浅叶节点向上经过的黑点数量相等,路径长度更长,白点只多不少。
结论 3:最优染色方案满足最浅叶节点上方不存在白色节点。
结合结论 1 和 2,显然。
一个黑点会影响其子树中的所有叶子,若要让黑点尽量多,即需要让黑点的深度尽量大。
设:
:整棵树的最浅叶子深度为 。 : 的子树最浅叶子深度。 : 上方的白点个数。
从上到下考虑,若
dfs 即可,复杂度