
并查集
文章平均质量分 81
维护联通性的东东
ez_lcw
这个作者很懒,什么都没留下…
展开
-
【XSY2506】bipartite(动态维护二分图,线段树,可撤销并查集)
感觉非常神奇,但大家都说非常套路/kk把所有操作离线下来,我们以时间为下标建线段树,对于一条边,我们把它加入到它出现的时间区间内去。我们在线段树上 dfs,每次到达一个节点的时候加边,到达叶子节点的时候输出,回溯的时候撤销(这就是这样做的好处,我们不需要删除,只需要撤销)。而只有加边和撤销操作的二分图是好维护的:使用可撤销并查集。每次加入一条边时,若两个端点不连通,那么将两个并查集连起来,其中可能需要对一个并查集整体反色,在根上打 tag 即可;若两个端点连通,假如同色则标记答案为 NO,假如不同色则原创 2021-10-29 15:51:32 · 202 阅读 · 0 评论 -
【XSY3404】猴戏世家
法一:题解做法。不太好想。动态维护不太好做,我们考虑先把栅栏最后长什么样维护出来。扫描线,按 xxx 从大到小扫描,过程中维护当前扫描线上的一些区间,每一个区间内的点同属于一个栅栏,然后扫描到一个栅栏的时候找到它下面的第一个区间:如果这个区间对应的栅栏出现时间比当前栅栏晚,那么之后这个区间会属于当前栅栏,那么合并当前栅栏的区间和这个区间,并继续往下找;如果这个区间对应的栅栏出现时间比当前栅栏早,那么当前栅栏延伸到这个区间时就会被挡住了。于是我们就能求出最后每一个点属于哪一个栅栏,维护区间可以用 se原创 2021-10-11 21:55:41 · 122 阅读 · 0 评论 -
【HNOI/AHOI2018】排列(树上一类全序问题)
这个条件给的有点诡异:对于任意的 apj=pka_{p_j}=p_kapj=pk,都有 k<jk<jk<j。那么对于某个 ax=ya_x=yax=y,意思就是 yyy 在 ppp 中的位置小于 xxx 在 ppp 中的位置。那么如果我们连边 (ax,x)(a_x,x)(ax,x),就是要求图中没有环,是一棵树,而且父亲在 ppp 中的位置要小于儿子在 ppp 中的位置。再看一下要求:按 ppp 的顺序把 i×wpii\times w_{p_i}i×wpi 加起来得到总权原创 2021-09-10 20:24:15 · 154 阅读 · 0 评论 -
【HDU6326】Monster Hunter(树上一类全序问题)
先考虑没有树的限制,即我们可以任意安排顺序打怪兽,那么这就是一个全序问题。考虑在某种顺序下,假设初始血量为 ststst,那么打到第 iii 个怪物时剩余的血量就是 st+∑j=1i−1(bj−aj)st+\sum\limits_{j=1}^{i-1}(b_j-a_j)st+j=1∑i−1(bj−aj),如果设 sumi=∑j=1i−1(bj−aj)sum_i=\sum\limits_{j=1}^{i-1}(b_j-a_j)sumi=j=1∑i−1(bj−aj),那么我们就需要保证 ∀i,s原创 2021-09-09 16:37:10 · 341 阅读 · 0 评论 -
【AGC023F】01 on Tree(树上一类全序问题)
显然如果没有树的限制,我们优先选 000,然后选 111。如果有了树的限制,我们考虑下面这么一种贪心方法:假设当前能够选的点的集合为 SSS(初始时 SSS 只包含根),然后选出 SSS 中优先级最大的点 uuu(000 的优先级大于 111 的优先级)放在序列末尾,然后把 uuu 从 SSS 中删除,并且把 uuu 的儿子都塞进 SSS 里面,再重复上述过程直至 SSS 为空为止。这个贪心方法看起来很对,但可能会出现下面这种情况:如图,我们选完根节点 111 后,SSS 中包含的是节点 222 和原创 2021-09-09 15:33:48 · 482 阅读 · 0 评论 -
【XSY4055】小K的疑惑(模拟最短路,值域并查集)
题面小K的疑惑题解以下的数都是在 bbb 进制意义下讨论。默认 n≥bn\geq bn≥b,否则 n<bn< bn<b 可以特判答案为 111。考虑 DP,设 drd_rdr 表示所有模 nnn 余 rrr 的正整数中非零位个数的最小值,那么我们要求的即为 d0d_0d0。我们考虑从 drd_rdr 转移出去:我们可以考虑把这个模 nnn 余 rrr 的数末尾添上一个 000,此时余数变为了 br mod nbr\bmod{n}brmodn,非零位个数不变,故:d原创 2021-06-15 13:25:01 · 143 阅读 · 0 评论 -
【CF1253F】Cheap Robot(最小生成树,最短路)
首先发现所有询问点都是充电桩这个条件很有用。它能滋生出一种暴力到极端的想法:用 Floyd 对全局跑一遍最短路。然后新建一个图,图中两两充电桩连一条边,边权为它们之间的最短路,代表着从这个充电桩直接走到那个充电桩最少要备多少电。然后再把新图的最小生成树建出来,询问时直接询问树上两点路径边权最大值。发现时间压根过不去,也不太好直接优化。发现瓶颈主要是在跑 Floyd O(n3)O(n^3)O(n3) 和建图 O(k2)O(k^2)O(k2),这是我们我们远远不能接受的。但是原图最多也就 mmm 条边,原创 2021-01-25 19:56:46 · 215 阅读 · 0 评论 -
【XSY2485】MST(最小生成树+倍增lca+并查集)
题面Description给定一个nnn个点mmm条边的连通图,保证没有自环和重边。对于每条边求出,在其他边权值不变的情况下,它能取的最大权值,使得这条边在连通图的所有最小生成树上。假如最大权值为无限大,则输出−1-1−1。Input第一行两个整数nnn,mmm,表示nnn个点mmm条边接下来mmm行,每行333个整数xxx,yyy,zzz,表示节点xxx和节点yyy之间有一条长zzz的...原创 2019-08-20 22:05:12 · 201 阅读 · 0 评论 -
【bzoj4358】permu【XSY1535】seq(莫队+并查集)
考虑莫队,但是我们发现这个东东只支持insinsins(至于怎么支持等会再讲),不支持deldeldel操作,所以我们构造一种只insinsins不deldeldel的莫队。由于我们按莫队的方法排序,第一关键字为lll所在的块,第二关键字为rrr。所以当排完序后,肯定是当lll所在的块相同时,rrr单调递增,所以我们对lll所在的块相同的询问进行处理。设对于块BBB,它的末尾位置为endende...原创 2019-10-02 13:02:11 · 228 阅读 · 0 评论