P4220 [WC2018] 通道
如果是边分治,那么可以直接对于两种颜色建虚树后 DP 维护直径端点做。
但是我不会边分治,只会点分治,如何将多颜色问题转化成两颜色问题?
类似合并石子哈夫曼树,每次选择结点个数最小的两个 branch 合并,这玩意看似是 \(3 \log\) 的,实际上因为点分治的良好结构,可以收敛到 \(2 \log\)。
然后跑得贼快贼快,比一些单 log 做法跑得都要快。
难写也是难写,细节多也是真的,我场上没调出来。
如果是边分治,那么可以直接对于两种颜色建虚树后 DP 维护直径端点做。
但是我不会边分治,只会点分治,如何将多颜色问题转化成两颜色问题?
类似合并石子哈夫曼树,每次选择结点个数最小的两个 branch 合并,这玩意看似是 \(3 \log\) 的,实际上因为点分治的良好结构,可以收敛到 \(2 \log\)。
然后跑得贼快贼快,比一些单 log 做法跑得都要快。
难写也是难写,细节多也是真的,我场上没调出来。