「BalticOI 2020」小丑
「BalticOI 2020」小丑
Analysis
问题即考虑加入一个边集,判断是否是二分图
容易想到用带权并查集/LCT 之类的结构维护
考虑对于每个左端点/右端点 维护最长的有解区间
显然具有单调性
就可以完成查询
下文认为同阶
Sol1 LCT
考虑尺取,同时用暴力维护答案合法性,下面只讲实现
考虑对于所有的边,优先加入树上,对于每一个环,只保留最后被删除的边
这样可以保证一条边被删除时,两个连通块之间没有边
同时,维护每一个连通块内的奇环边 最优集合 即可
复杂度为,速度。。。。
Sol2 分治决策单调性/整体二分
考虑用并查集维护二分图,求出,对于,已知答案区间为
通过枚举来找到中答案分别为的两部分的界点
为此我们加入的边,然后依次加入的边,直到出现方案
直接维护复杂度显然是错的
因此考虑在分治过程中,保证分治时,的边集已经加入
此时每次操作需要移动的范围在以内
分治共层,每层长度总和为,因此移动次数为
由于需要维护简单的回撤操作,可以用按秩合并并查集,因此总复杂度为