[CF603E]Pastoral Oddities 题意:有n个点,依次加入m条边权为$l_i$的无向边,每次加入后询问:当前图是否存在一个生成子图,满足所有点的度数都是奇数.如果有,输出这个生成子图中边权最大的边的权值最小可能是多少. $n\le 10^5,m\le 10^6,l_i\le 10^9$ 题解:可以证明如果存在一个生成子图满足所有点度数都是奇数,当且仅当所有连通块都有偶数个点.并且可以知道加边一定不会使答案更劣.正解有三种:1.LCT维护最小生成树:2.cdq分治(类似整体二分)…
题目链接:http://poj.openjudge.cn/practice/C15C/ 题意:n 点 m 边 k 天.每条边在某一天会消失(仅仅那一天消失).问每一天有多少对点可以相互到达. 解法:开始不会做,参考的YYN的题解:http://blog.csdn.net/u013368721/article/details/45725181 学习了这种CDQ加并查集的做法,可以说是非常的巧妙了.复杂度可以保证在:O(KlogklogK)的范围. //CDQ + DSU #include <bit…
题目链接:hdu_5354_Bipartite Graph 题意: 给你一个由无向边连接的图,问对于每一个点来说,如果删除这个点,剩下的点能不能构成一个二分图. 题解: 如果每次排除一个点然后去DFS判是否为二分图,那肯定会超时. 我们可以知道,删除其中一个点,对其他好多的边都不会有影响,所以我们可以将其他点的边先加进去,然后来判断一个区间的点是否可行. 这就和cdq分治的思想差不多.我们令cdq(l,r)表示解决l到r区间的答案.然后通过并查集来判断已经加入的点是否为二分图. 并查集在判二分图…
4025: 二分图 题意:加入边,删除边,查询当前图是否为二分图 本来想练lct,然后发现了线段树分治的做法,感觉好厉害. lct做法的核心就是维护删除时间的最大生成树 首先口胡一个分块做法,和hnoi2016第一题类似的偏序关系,一样做. 线段树分治 数据结构题中如果使用对时间cdq分治,要求每个操作独立,不能很好的处理撤销(删除)操作. 采取线段树区间标记的思想 对于一个操作,它的存在时间是\([l,r]\) 我们模仿线段树打标记的过程进行分治,\(cdq(l,r,S)\)表示当前处理时间\…
传送门 cdq分治好题. 对于一条边,如果加上它刚好连通的话,那么删掉它会有两个大集合A,B.于是我们先将B中禁用的边连上,把A中禁用的边禁用,再递归处理A:然后把A中禁用的边连上,把B中禁用的边禁用. 这样递归下去用并查集维护答案就行了. 另外,当向上回溯时需要撤销之前的操作,因此需要用栈维护并查集历史信息. 代码: #include<bits/stdc++.h> #define N 100005 #define M 200005 using namespace std; inline in…
经典动态二分图问题. 考虑solve(l,r)分治成l,mid和mid+1,r.先将区间[mid+1,r]中的点全部加入图中,若此时存在奇环则ans[l..mid]全部为0,否则递归到左边. 递归完左边后将右边的点全部删去,左边点全部加入,按同样的方法处理右边. 判断奇环使用可撤销带权并查集,注意多组数据不要用memset. #include<cstdio> #include<algorithm> #include<cstring> #define rep(i,l,r)…
CF603E Pastoral Oddities 度数不好处理.转化题意:不存在连通块为奇数时候就成功了(自底向上调整法证明) 暴力:从小到大排序加入.并查集维护.全局变量记录奇数连通块的个数 答案单调不增? 类似整体二分.(其实类似决策单调性) 横纵劈开,提前加入不会影响的边,复杂度得以保证 按秩合并并查集撤销 值域的访问,不用每次排序,答案一定是某个边的边权,提前排好序.直接访问即可 #include<bits/stdc++.h> #define reg register int #def…
传送门 线段树分治好题. 这道题实际上有很多不同的做法: cdq分治. lct. - 而我学习了dzyo的线段树分治+并查集写法. 所谓线段树分治就是先把操作分成lognlognlogn个连续不相交的区间分别维护信息. 最后按线段树从上到下再从左到右的遍历方式一起统计答案. 这道题可以按时间建树,每次相当于在一段区间里增加边. 最后统计二分图就行了,这个问题可以用并查集解决. 然而我们回溯上去的时候是需要撤销操作的,因此需要用并查集按秩合并. 代码: #include<bits/stdc++.h…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5354 题意:求删去每个点后图是否存在奇环(n,m<=1e5) 解法:很经典的套路,和这题一样:http://www.cnblogs.com/spfa/p/7358672.html CDQ套并查集. 这题最开始是看了南神的代码才懂的,http://blog.csdn.net/hdu2014/article/details/47450709    因为要判断每一个点,而且一旦一个点之外的几个点形成了奇环…
[CF576E]Painting Edges 题意:给你一张n个点,m条边的无向图,每条边是k种颜色中的一种,满足所有颜色相同的边内部形成一个二分图.有q个询问,每次询问给出a,b代表将编号为a的边染成颜色b,但如果染色后不能满足所有颜色相同的边内部都是二分图就不染.问你每次是否能染成功. $n,m,q\le 5\times 10^5,k\le 50$ 题解:本题看起来要求在线,实质上完全可以离线. 如果没有不染这种操作的话,那么直接线段树按时间分治+并查集按秩合并就完事了.但如果有呢?我们先假…