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\) 的一个儿子,得转移为:

\[\large\begin{aligned} f_{x,0}&=\max\left\{ \max\{ f_{y,0},f_{y,1} \}+deg_x-2 \right\} \\ f_{x,1}&=\max\{ f_{y,0}+1 \} \end{aligned} \]

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

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

E

posted @ 2020-10-23 12:46  lhm_liu  阅读(127)  评论(0编辑  收藏  举报