摘要:
\(LCT\) 动态维护树上路径最值,典中典了。 时间复杂度 \(O(n\log n)\)。 #include<bits/stdc++.h> #define fa(x) lct[x].fa #define fl(x) lct[x].fl #define mx(x) lct[x].mx #define 阅读全文
posted @ 2025-01-08 18:24
长安一片月_22
阅读(13)
评论(0)
推荐(0)
摘要:
名字感觉挺奇怪的。 考虑离线算法。首先答案就是用 \(n\) 减去连完边后的生成树森林边数。生成树当然就可以用 \(lct\) 求解了。我是不会告诉你这个时候我已经开始想回滚莫队了的。 考虑当我们倒序加入 \([l,r]\) 中的边时,哪些边会产生贡献。我们考虑假如我们新加入一条边,与原先的生成树形 阅读全文
posted @ 2025-01-08 18:21
长安一片月_22
阅读(30)
评论(0)
推荐(0)
摘要:
最大值最小的路径肯定在最小生成树上,考虑用 \(LCT\) 维护最小生成树,只需要维护长度最长的边即可实现。由于 \(LCT\) 维护最小生成树不支持删边,所以采用倒序加边的方式处理。 时间复杂度 \(O(n\log n)\)。 #include<bits/stdc++.h> #define fa( 阅读全文
posted @ 2025-01-08 14:37
长安一片月_22
阅读(15)
评论(0)
推荐(0)
摘要:
加边删边 \(LCT\),标记下放同 \(luogu\) 线段树 \(2\) 一题。 时间复杂度 \(O(n\log n)\),第一次交的时候我维护 \(sum\) 不维护 \(sz\ WA\) 完了。 #include<bits/stdc++.h> #define int long long #d 阅读全文
posted @ 2025-01-08 10:57
长安一片月_22
阅读(21)
评论(0)
推荐(0)

浙公网安备 33010602011771号