题解:P4383 [八省联考 2018] 林克卡特树

link

转化一下题意,也就是通过删掉 \(k\) 条边将原树划分成 \(k+1\) 个连通块,求这些连通块的直径之和。这里有一个套路,就是设 \(f_{u,0/1/2}\) 表示在以 \(u\) 为最浅点的连通块里已经钦定了 \(0/1/2\) 的直径端点的最大直径和(如果钦定了一个端点则加上该端点到 \(u\) 的距离),然后就可以 \(O(k)\) 转移,时间复杂度 \(O(nk)\)

发现这个问题属于选恰好 \(k\) 个的问题,且答案随着 \(k\) 形成一个上凸的函数,因而可以适用 wqs 二分,从而将时间复杂度优化到 \(O(n\log\sum w)\)

posted @ 2025-02-24 11:21  FugiPig  阅读(25)  评论(0)    收藏  举报