Turtle and Paths on a Tree

题目

将一棵二叉树剖成若干条链,满足链覆盖所有的边有且只有一次,求所有链的\(mex\)的最小值

题解

\(f[u][i]\)为以\(u\)为根的子树内,除了向\(u\)子树外延伸的路径以外,其他所有路径的\(mex\)的最小值,且钦定这条路径的答案就是\(i\),因为我们可以将题面的\(mex\)转化为不在这条路径上的数,这样求\(mex\)也是对的

考虑\(n^2\)DP,直接分情况讨论

\(u\)为叶子节点,

\[f_{u,i}=\begin{cases} 0, & i \neq a_u \\ +\infty, & i=a_u \end{cases} \]

\(u\)有一个子节点

\(\text{minx}=\min\limits_{i\neq a_u}{f_{x,i}+i}\)

\[ f_{u,i}=\begin{cases}\min(f_{x,i},\text{minx}), & i \neq a_u \\+\infty, & i=a_u\end{cases} \]

\(u\)有两个子节点

\(\text{minx}=\min\limits_{i\neq a_u}{f_{x,i}+i},\text{miny}=\min\limits_{i\neq a_u}{f_{y,i}+i}\)
\(k=\min(\min\limits_{i \neq a_u}{(f_{x,i}+f_{y,i}+i),\text{minx} + \text{miny}})\)

\[f_{u,i}=\begin{cases} \min(f_{x,i}+\text{miny},f_{y,i}+\text{minx},k), & i \neq a_u \\ +\infty, & i=a_u \end{cases} \]

这是我们看数据范围\(n<=25000\)

感觉有点奇怪,感觉像用\(bitset\)优化的那种数据范围,但这道题不可能用\(bitset\)优化

所以我们充分发挥人类智慧,猜测\(mex\)上界

我们以下证明mex最大不超过\(\frac{n}{\ln n}\)

证明

我们想一下什么时候可以使一条路径的\(mex\)尽可能大,我们发现当点数越大是\(mex\)可能会增大

所以为链的时候,能比树的时候造成更大的\(mex\)

我们只要证明链的答案小于等于\(\frac{n}{\ln n}\)

所以考虑在一条链上的数为\(x1,x2,x3,......,x_{n-2},x_{n-1},x_{n}\)

那么我们枚举数\(x\),设\(x\)的出现次数为\(c_x\),那么序列最多分成\(c_x+1\)个不包含\(x\)的序列,这部分代价最多为\(x\)

再将x带上左右两边的数,这部分代价最多为4

所以\((c_x+1)*x+c_x*4 \ge t\)

放缩得\((c_x+1)*(x+4) \ge t\)

所以得到\(c_x \ge \left\lceil\frac{t}{i + 4}\right\rceil - 1\)

\(x \ge 4\)则可以变为\((c_x+1)*x+c_x*3 \ge t\)

放缩得\((c_x+1)*(x+3) \ge t\)

所以得到\(c_x \ge \left\lceil\frac{t}{i + 3}\right\rceil - 1\)

所以$$
n = \sum\limits_{i \ge 1} c_i \ge \sum\limits_{i = 1}^3 (\left\lceil\frac{t}{i + 4}\right\rceil - 1) + \sum\limits_{i \ge 4} (\left\lceil\frac{t}{i + 3}\right\rceil - 1)
$$
二分得到\(t\),做完了

或者从上面证明\(n\)大概为\(t \ln t\),所以做完了

posted @ 2026-08-01 16:20  Maple_Mist  阅读(7)  评论(0)    收藏  举报