二分答案 + 树上差分.
首先可以考虑二分答案,变为判定是否存在合法方案使得改造后给出的路径长度都不超过 $mid$ .
预处理每条路径的长度 $len$ ,若 $len\le mid$ ,则不用考虑.否则,被改造的边长度至少为 $mid-len$ .
将每条路径按上述过程处理,可以得出被改造的边长度至少为 $\max (mid-len_i)$ ,并且在所有需要考虑的路径上.
用树上差分给路径上的边打上标记,然后枚举每条边进行验证.
1 |
|
夢はここに 思い出は遠くに
二分答案 + 树上差分.
首先可以考虑二分答案,变为判定是否存在合法方案使得改造后给出的路径长度都不超过 $mid$ .
预处理每条路径的长度 $len$ ,若 $len\le mid$ ,则不用考虑.否则,被改造的边长度至少为 $mid-len$ .
将每条路径按上述过程处理,可以得出被改造的边长度至少为 $\max (mid-len_i)$ ,并且在所有需要考虑的路径上.
用树上差分给路径上的边打上标记,然后枚举每条边进行验证.
1 | #include <bits/stdc++.h> |