并查集
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
GDKOI2016 Day2 T3 项链
T3 项链 给出一个环状字符串,求删除连续一段后剩下的字符为对称的最大长度、首先你要知道怎样的一个字符串算是对称的。一定是由两个回文串拼成的。我们可以倍长原串,然后枚举开头,这样删除的一定是枚举的串的前缀。 用manacher预处理出所有的回文中心的扩展半径。两个合法的回文中心i和j一定满足j-i<=n&j-p[j]<=i+p[i]。并且它的串的长度就是j-i。于是我们用线段树维护一个区间最原创 2016-03-05 12:59:39 · 1117 阅读 · 2 评论 -
[CF576E]Painting Edges
Description给出一张n个点m条边的图,有k种颜色,给出q次操作,每次操作形如“将第i条边染成颜色c” 如果某一次操作之后会使得对于颜色c,只考虑颜色c的边,原图不是一个二分图,那么这次操作无效(即不会进行染色) 求每次操作是否成功。 n,m,q<=5*1e5,k<=20Solution首先这是一个动态二分图的问题,可以直接通过并查集+分治做到两个log 具体来说每条边有出现时间区间原创 2018-03-07 22:15:54 · 660 阅读 · 0 评论 -
[CF878E]Numbers on the blackboard
Description给出n个数字,每次询问一个区间[l,r],对这个区间内部的点进行操作。 每次操作可以合并相邻两个数x,y,将它们变成x+2y 对于每次询问输出当最后只剩下一个数字时,这个数字的最大值。 询问互相独立,答案对1e9+7取模。 nSolution首先我们考虑怎么O(n)解决询问 容易发现最后的答案一定是形如∑ni=1ai2ki\sum_{i=1}^{n}原创 2018-01-05 22:52:31 · 1690 阅读 · 0 评论 -
【WC模拟】覆盖的串
Description我们称一个字符串A 覆盖了一个字符串B 当且仅当对于B 中的每一个字符,都有一个包含它的和A 相同的子串。 例如,A={1,2,1}覆盖了B={1,2,1,2,1,1,2,1}。 所谓的最短覆盖子串,指的是覆盖该串的最短子串。 例如B 的最短覆盖子串为A,长度为3。 最短覆盖前缀数组指的是对于一个串的每一个前缀,它们的最短覆盖子串长度按顺序组成的数组。 例如B 的最短原创 2017-01-18 20:58:27 · 393 阅读 · 0 评论 -
[51nod1743]雪之国度
Description给出一张n个点m条边的无向联通图,点i的点权为w[i],边(x,y)的边权为|w[x]-w[y]| q次询问,每次询问一个点对(x,y)是否存在两条不相交(边相交)的路径,如果存在,输出这两条路径上的边权最大值(如果有多中方案选最小的) 3<=N<=100000, 3<=M<=500000, 1<=Q<=100000Solution额,这种东西一般都是维护点双啦。。。 我原创 2016-11-30 19:53:56 · 719 阅读 · 0 评论 -
【GDOI2017模拟11.5】Dash Speed
Description给出n个点的一棵树,每条边有一个限制区间[l,r]。 给出m次询问,每次询问给出一个数x,求一条最长的所有边都满足l<=x<=r的路径。 n,m<=7*10^4Solution一开始看错数据范围,以为是7*10^5,虚的我。。。 然而没想到每次询问就是相当于保留所有l<=x<=r的边,求森林的直径 考虑分治(据说这也是cdq分治) 首先把每一条边放到所有它完全包含的分原创 2016-11-07 19:24:52 · 1014 阅读 · 0 评论 -
【雅礼联考GDOI2017模拟9.2】Ztxz16学图论
Description给出一张n个点m条边的无向图,q次询问每次询问只有编号为l到r之间的边可以使原图有多少个联通块。 n,m,q<=200000Solution这种东西很显然用并查集离线啦。 然而怎么删除是个问题。 Orz Drin_E神奇莫队梦想过。 我们这样想,维护一个数组,某一位为1表示这一条边在并查集里,0表示不在。加边的顺序是从左到右。 枚举左端点,构出这个数组,然后就可以用树原创 2016-09-03 16:36:53 · 924 阅读 · 0 评论 -
[bzoj3211]花神游历各国
Description写一个数据结构兹瓷区间求和和区间开方。 n<=10^5,m<=2*10^5,ai<=10^9Solution区间开平方?暴力开呗。 反正10^9也不需要开多少次,只不过常数大了点罢了。 用线段树维护区间和,还有区间标记,表示这个区间是不是还有可以开方的数(1&0)。 不过,有一个迷之问题,为什么一定要把0给标记,不然会惨绝人寰地超时? 表示奥妙重重。Code#incl原创 2016-06-11 18:45:17 · 843 阅读 · 0 评论 -
[bzoj1015][JSOI2008]星球大战starwar
Description给出n个点和m条无向边,再给出q次操作,每次操作把一个点和与他相连的边全部删除,求每次操作之后的联通块个数。 n,q<=4 * 10^5, m<=2 * 10^5Solution正着做似乎很麻烦?我们可以考虑正难则反(又来)。 为什么?因为并查集不兹瓷删边,但兹瓷加边。2333 似乎我已经直接把做法说出来了。然后就是细节了。 判断联通块个数不能用O(N),开个ans判一原创 2016-06-03 20:58:44 · 896 阅读 · 0 评论 -
bzoj4569[Scoi2016]萌萌哒
Description给出一个有n位的无前导0正整数,再给出m个限制,每个限制形如l1…r1,l2..r2表示这个数的l1~r1位和第l2~r2位是相等的。求这样的数的个数。 n,m<=10^5Solution我们可以先来考虑一下暴力。 对于这一个区间,我们暴力把它们用并查集并起来。 那么100%呢? 我们可以用f[i][j]表示[i~i+2^j-1]这一段区间属于哪一个集合。 若没有则等原创 2016-05-20 20:37:15 · 1650 阅读 · 0 评论 -
【NOIP2012提高组】开车旅行
Description现在有n个城市,每个城市有它的高度HiH_i,保证每个HiH_i互不相同。我们定义两个城市之间的距离disi,j=|Hi−Hj|dis_{i,j}=|H_i-H_j|,并且只能从编号小的城市去到编号大的城市。现在有两个人,小A和小B要开车(雾)去旅行。小A先开一天,小B再开一天。每一天都可以从一个开到另一个城市。小A会选择去离当前城市第二近的城市,小B会选择去离当前城市最近的那原创 2016-03-14 20:47:01 · 3568 阅读 · 0 评论 -
[APIO2019]桥梁
Description给出一张n个点m条边的图,每条边有边权di有q次操作,第i次操作会修改一条边的边权,或者问从点x出发,只经过边权>=y的边,能到达多少个点n<=50000,m,q<=10^5Solution数据结构学傻了.jpg考虑对操作分块,我们只考虑一段操作带来的影响将这个操作块内的询问和修改分开,将询问按权值排序,将所有边按边权排序,先不考虑修改操作的边...原创 2019-06-26 16:20:30 · 366 阅读 · 0 评论