【题解】P5787 二分图 /【模板】线段树分治

概念

线段树分治是一种用于维护时间轴等的离线算法,本质上是通过维护时间轴的连续区间得到某一时刻的状态。

时间复杂度和普通线段树相同,空间复杂度为 O(nlogn).

现在常见的应用是维护有操作的图连通性问题。

例题

P5787 二分图 /【模板】线段树分治

将每条边看成修改操作,则它的作用范围是时刻区间 [l,r).

考虑对时间轴构造一棵线段树。对于线段树上的结点,假设它代表的区间是 [l,r],则该结点维护所有在 [l,r] 时刻均存在的边。

于是从根到叶结点的路径可以维护某一时刻存在的所有边。

假如可以快速判定二分图,我们只需要对整棵线段树进行一次遍历,动态维护当前的图就行。

判定二分图可以考虑可撤销扩展域并查集。

因为线段树树高为 O(logn) 级别,所以每条边至多被分解成 O(logn) 个信息,空间复杂度为 O(mlogn).

复杂度为 O(klogklogn)

代码

posted @   kymru  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示
主题色彩