1 条题解
-
0
自动搬运
来自洛谷,原作者为

a___
这个家伙很蒻,什么也没有留下qwq搬运于
2025-08-24 22:23:36,当前版本为作者最后更新于2020-08-10 17:08:55,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
update(20/8/18):感谢@loveJYdalao指出错误。
算法标签:$\color{#FFFFFF}\colorbox{#E74C3C}{\small\texttt{树上dp}}\ \color{#FFFFFF}\colorbox{#E74C3C}{\small\texttt{贪心}}$
这题其实很好写,就是dp状态不太好想。
前置芝士:一个数列的中位数小于等于 一个数列有至少 个数小于等于 。
记 表示边 上的边权(或者叫做军队战斗力)。
首先,显然没有无解的情况,因为如果每条边权都置为 ,无论如何都不会有人造反。
然后,由于以上性质我们发现对于一条边的边权 我们只关心其是否大于两端点点权,于是
设 表示
当 $\operatorname{val}(\operatorname{fa}(u),u)\leq a_u\ \ /\ \ \operatorname{val}(\operatorname{fa}(u),u)> a_u$ 时 以点 为根的 子树内 满足条件的 边权和的 最大值。
设 表示
当 $\operatorname{val}(\operatorname{fa}(u),u)\leq a_{\operatorname{fa}(u)}\ \ /\ \ \operatorname{val}(\operatorname{fa}(u),u)> a_{\operatorname{fa}(u)}$ 时 的子树 ,包括边 , 边权和的最大值。举个例子:

以点 为例,其周围有 条边,则应存在 条边边权小于等于 。当边 边权小于等于 时,向下可以有一条边权大于 ,所以 。显然,如果我们以点 为根dfs,最后答案为 。
接下来是状态转移。
- 已经算出 $\forall v\in \operatorname{son}(u)\ \ \ \ g_{v,0/1}$,求 :
考虑贪心。我们先选所有 ,即使所有到儿子的边的边权都小于点 点权。对于 ,此时可以有 $\operatorname{du}(u)-\left(\left\lfloor\dfrac{\operatorname{du}(u)}{2}\right\rfloor+1\right)$ 条边的边权大于点 点权;对于 ,此时可以有 $\operatorname{du}(u)-\left(\left\lfloor\dfrac{\operatorname{du}(u)}{2}\right\rfloor+1\right)-1$ 条边的边权大于点 点权。设允许的边权大于 的边数为 ,我们从大到小枚举 个 ,即贪心地考虑将小于 的边换成大于 的边即可。 - 已经算出 ,求 :
分类讨论:-
-
- $a_u<\operatorname{val}(\operatorname{fa}(u),u)\leq a_{\operatorname{fa}(u)}$
- $\operatorname{val}(\operatorname{fa}(u),u)\leq a_u<a_{\operatorname{fa}(u)}$
-
- $a_u<a_{\operatorname{fa}(u)}<\operatorname{val}(\operatorname{fa}(u),u)\leq m$
-
直接并入1或3-
-
- $\operatorname{val}(\operatorname{fa}(u),u)\leq a_{\operatorname{fa}(u)} <a_u$
-
- $a_{\operatorname{fa}(u)}<\operatorname{val}(\operatorname{fa}(u),u)\leq a_u$
- $a_{\operatorname{fa}(u)}<a_u<\operatorname{val}(\operatorname{fa}(u),u)\leq m$
-
-
综上:
$$g_{u,0}=\begin{cases}\max\{f_{u,0}+a_u,f_{u,1}+a_{\operatorname{fa}(u)}\}&a_u\leq a_{\operatorname{fa}(u)}\\f_{u,0}+a_{\operatorname{fa}(u)}&a_u>a_{\operatorname{fa}(u)}\end{cases} $$$$g_{u,1}=\begin{cases}f_{u,1}+m&a_u\leq a_{\operatorname{fa}(u)}\\\max\{f_{u,0}+a_u,f_{u,1}+m\}&a_u>a_{\operatorname{fa}(u)}\end{cases} $$然后从下向上dp即可。
注意到当 时,无论如何不可能出现 。此时,需特判将 置为 。
- 已经算出 $\forall v\in \operatorname{son}(u)\ \ \ \ g_{v,0/1}$,求 :
- 1
信息
- ID
- 5254
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者