CF1338

Codeforces Round #633 (Div. 1)

A

最优情况一定是只在必须的位置增加,记录最大增量,取 (log_2) 即为答案。

B

最小值:叶子节点两两间的距离都为偶数时,答案为 (1),否则答案为 (0),以任意一个叶子节点为根 (dfs) 即可判定。

最大值:先将答案设为 (n-1),若一个节点有 (k (k>0)) 个相邻的叶子节点,则答案减去 (k-1)

C

打表找规律,规律和四进制有关。

D

树上相邻的两个点一定不可能产生包含关系,同时发现若 (x,y) 有包含关系,(z) 也在这个包含关系中,则 (z)(x,y) 路径的距离一定 (leqslant 1)。画图不难得,若距离 (>1),则 (z) 是被夹在 (x,y) 间的,因此该结论成立。

得任何一个合法情况都是在树上选出一条毛毛虫,在上面求最大独立集。考虑树形 (DP),设 (f_{x,0/1}),表示以 (x) 为端点向下延申的毛毛虫的最大独立集,(0/1) 表示 (x) 是否被选,设 (y)(x) 的一个儿子,得转移为:

[largeegin{aligned} f_{x,0}&=maxleft{ max{ f_{y,0},f_{y,1} }+deg_x-2 ight} \ f_{x,1}&=max{ f_{y,0}+1 } end{aligned} ]

这里转移到 (f_{x,0}) 时加上 (deg_x-2) 的原因是最优情况一定是把 (x) 的父亲也选上,所以 (x) 相邻的点就只考虑 (deg_x-2) 个。

对于不是直上直下的毛毛虫,在 (lca) 处合并来更新答案即可。

E

原文地址:https://www.cnblogs.com/lhm-/p/13863516.html