
并查集
ws_yzy
一如OI情似海
展开
-
[Noi2015]品酒大会|后缀数组|并查集
后缀数组+并查集先求出height数组 然后排序并查集维护 size max min从大到小枚举height 若当前以x开头的后缀和以y开头的后缀的lcp为kp为x的并查集的根,q为y的并查集的根则k相似的的个数 加上size[p]*size[q]最大值更新 max{mx[p]*mx[q],mn[p]*mn[q],mx[p]*mn[q],mn[p]*mn[q]}#i原创 2016-01-11 20:21:54 · 1025 阅读 · 0 评论 -
BZOJ 3211: 花神游历各国 |树状数组|并查集
树状数组维护前缀和并查集维护从一个点向后(包括这个点)第一个权值>1的点因为权值而开根号一个int的数顶多开5次就成了1复杂度是nlogn的#include#include#include#include#include#include#include#include#include#include#define lowbit(x) x&(-x)#defi原创 2016-01-12 06:55:05 · 489 阅读 · 0 评论 -
4320: ShangHai2006 Homework|并查集
很有意思的一道题! 对于询问分段: 若Y小于等于sqrt(300000),暴力,对所有的插入的数都更新mn[i]。 若Y大于sqrt(300000),枚举kY,用并查集维护>=i的第一个数,这样只支持删除操作是O(1),然后倒着枚举一边,删除一个数x那么就fa[x]=fa[x+1]#include<cstdio>#include<cstdlib>#include<cmath>#inclu原创 2016-02-03 08:47:17 · 767 阅读 · 0 评论 -
4423: [AMPPZ2013]Bytehattan|并查集|平面图转对偶图
猜结论大法好!! 由于删边不好维护,所以将平面图转化为对偶图,这样在平面图上删边相当于在对偶图上加边,在平面图上是否联通转化为在对偶图上是否不连通,类似于平面图的最大流转化为对偶图的最短路#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<vector>#include<cstdi原创 2016-03-16 08:00:11 · 999 阅读 · 1 评论 -
4415: [Shoi2013]发牌|线段树|并查集
很容易发现,如果有n张牌经过销牌n次的操作后与原牌的顺序是相同的 然后销牌的操作就相当于从当前的牌开始一直向后扫,扫到n后再回到1,直到找到第RiR_{i}张牌 这样可以用线段树维护一下,看当前销完牌后所取得牌在now...nnow...n还是1...(now−1)1...(now-1)直接用线段树找出这张牌。用并查集维护去玩这张牌后的下一张牌 复杂度O(nlog2n)O(nlog_{2}n)原创 2016-03-05 09:40:42 · 700 阅读 · 0 评论 -
4099: [Usaco2015 Open]Trapped in the Haybales|并查集|乱搞
暴力大法好,乱搞出奇迹!! 从左到右枚举两个草包之间的空隙,找从这个空隙最左边的最右边分别能到的最远的地方,因为是从左到有枚举的,所以如果到了前一个草包之间的空隙,那么他到达的最远的左端点肯定可以让当前的空隙来更新,然后维护最远到达的左区间可以用到并查集的思想。右区间就直接暴力 如果从当前的间隙走不出去,那么从当前间隙走到的间隙也都走不出去,可以处理一下#include<cstdio>#inc原创 2016-03-07 16:52:16 · 826 阅读 · 1 评论 -
BZOJ 3910: 火车|LCA|并查集
计算答案显然是一步一步的走然后求Lca用深度计算,关键就是怎么标记走过的路径 用并查集记录从这个点出发经过的最上端的城市,让后每次合并的时候从两个端点向lca合并,因为lca并查集记录的肯定是所有路径最上端的点#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<queue>#include<v原创 2016-02-26 18:50:30 · 655 阅读 · 0 评论