并查集
文章平均质量分 77
「已注销」
混子一个
展开
-
Zoj 3811并查集
14年网络赛一道题,有了思路敲起来还是挺流畅了,题目可以理解为不停的添加关键点到图里,然后判断连通性,所以想到了并查集,先把关键点存起来,然后依次进行合并。代码如下,1A还是很高兴的。 #include #include #include #include using namespace std; vector bcj[100005]; vector L; int in[100原创 2016-03-16 19:34:45 · 251 阅读 · 0 评论 -
Codeforces Round #329 (Div. 2)D LCA+并查集路径压缩
链接:http://codeforces.com/problemset/problem/593/D 题意:一棵树,有边权, 两种操作:其一,改变边权(边权只能越改越小并且大于1)。其二,给一个X(1----1e18),和a,b两点,问X / (简单路径的边权乘积) 思路:1.裸树链剖分,维护区间乘积就可以。。爆LL的区间直接记做一个inf。。但是不太会树链剖分,考虑一个退而求原创 2016-12-22 14:41:42 · 244 阅读 · 0 评论 -
hdu 6058 并查集
题意: 给你一个全排列,要你求这个序列的所有区间的第k大的和 思路:一道链表好题。。虽然没用链表做。。这两天有机会用链表补一下。。 拿到题首先分析数据性质,一个是全排列,一个是k比较小,因此我们可以考虑维护每个点周围比这个点向左大0--k-1的数有多少和向右。(相当于枚举这个点作为第K大的区间有多少个),这里注意的是要跳过比枚举点要小的数,如果可以o1跳过,那么单个点维护就是o(k原创 2017-08-01 21:04:32 · 606 阅读 · 0 评论 -
hdu 6109 数据分割(并查集,倍增)
题意:比较绕,n个表达式,表示a==b或者a!=b,有矛盾就重新开始,问可以分成多少段,每段多大。。 思路:倍增,On判断,也可以并查集加set维护(合并要注意使得集合头要是最早出现的。。),这里提供一下倍增的做法 代码: #include using namespace std; #define MEM(a,b) memset(a,b,sizeof(a)) #define原创 2017-08-12 21:16:07 · 796 阅读 · 5 评论 -
计蒜客 A.Artwork 并查集+set
链接:点击打开链接 题意:画直线分区域,问每画完一条线有几个区域 思路:倒着做变成擦直线,合并区域或形成新区域。可以使用并查集来维护。启发:类似拆分的问题都可以倒过来离线变成合并的问题。 代码: #include #define LL long long #define PB push_back #define pii pair #define MP make_pair #define X原创 2017-10-03 22:56:27 · 277 阅读 · 0 评论