随笔分类 -  数据结构_并查集

摘要:作为一个要考试的人,还不会并查集,简直了。。。 带权并查集 先上一道题: "P2024 [NOI2001]食物链" 相信大家都会吧QwQ 大致这样想 所以此时的边感觉是有方向的。 再来看一道别的题: "P4079 [SDOI2016]齿轮" 还是类似刚才的思路,将齿差比作为边权,若在同一个连通块就c 阅读全文
posted @ 2019-09-12 08:37 LuitaryiJack 阅读(493) 评论(1) 推荐(1)
摘要:思路:并查集+倒序操作 提交:1次 题解:把正向的摧毁换成逆向的加边,用并查集维护连通块数量就好了。 2019.07.22 阅读全文
posted @ 2019-07-22 15:22 LuitaryiJack 阅读(190) 评论(0) 推荐(1)
摘要:思路:并查集+生成树 提交:2次(虽然样例都没过但感觉是对的$QwQ$(判边少了一条)) 题解: 把所有点之间连边,然后$sort$一遍,从小往大加边,直到连第$n-k+1$条边(相当于是破话$k$个连通块的最短边),记录权值即为答案。 2019.07.22 阅读全文
posted @ 2019-07-22 09:12 LuitaryiJack 阅读(150) 评论(0) 推荐(1)
摘要:思路:枚举边集,最小生成树 提交:1次 题解:枚举最长边,添加较小边。 2019.07.20 阅读全文
posted @ 2019-07-20 12:35 LuitaryiJack 阅读(203) 评论(0) 推荐(1)
摘要:既然有了可持久化数组,就有可持久化并查集。。 由于上课讲过说是只能按秩合并(但是我也不确定。。。),所以就先写了按秩合并,相当于是维护fa[]和rk[] getf就是在这棵树中找,直到找到一个点的fa[x]==x 之所以这种写法不能路径压缩,个人理解是因为路径压缩会破坏原先的结构。。。反正我魔改改错 阅读全文
posted @ 2019-05-06 15:09 LuitaryiJack 阅读(134) 评论(0) 推荐(0)
摘要:4月的时候在luogu上做过 白雪皑皑 这道题,当时一遍AC可高兴了qwq,后来去了个厕所,路上忽然发现自己的做法是错的qwq。。。然后就咕咕了qwq 今天看到了 疯狂的馒头 ,发现一毛一样OvO。。。还是好好做一下吧QWQ 先上个错误代码(虽然BZOJ和Luogu都A了) 首先倒序处理显然吧。。。 阅读全文
posted @ 2019-05-06 14:23 LuitaryiJack 阅读(259) 评论(0) 推荐(0)
摘要:把每种颜色看成一个点,然后合并去判联通; 若联通,判一下是不是欧拉图或欧拉路。。。 还有,我的不是正解,要吸氧才能水过去、、、QAQ 2019 .04.18&&upd:修改不规范的map使用方法 阅读全文
posted @ 2019-04-18 00:19 LuitaryiJack 阅读(182) 评论(0) 推荐(0)
摘要:成立时当且仅当每个联通块都有环存在。一个连通块若有m个点,则必有多于m条有向边,可用并查集来维护。 阅读全文
posted @ 2019-04-18 00:04 LuitaryiJack 阅读(165) 评论(0) 推荐(0)
摘要:利用并查集按秩合并,保存每个点合并的时间; 求时间时,就一直跳u=fa[u],并记录路径上时间的最大值,代表最后一次合并的时间; 因为树高是$log$的,所以时间复杂度是$\mathcal{O}(mlogn)$ 阅读全文
posted @ 2019-04-17 23:56 LuitaryiJack 阅读(164) 评论(0) 推荐(0)
摘要:反向操作,先把所有的标记都打上(记得统计标记的数目),然后依次撤销,合并到自己的上一个点pre,即fa[u]=getf(pre[u]) 2019.04.16 阅读全文
posted @ 2019-04-17 23:51 LuitaryiJack 阅读(130) 评论(0) 推荐(0)
摘要:又一次做了这道题,感慨万千。 记得寒假时,被cmd2001点起来讲这道题,胡言乱语。。受尽鄙视(现在也是好吗)。。后来下课想A掉,可是3天下来总是错。。。后来抄了分题解就咕咕了。。。 今天老师留了这道题,想起往事不堪回首。。于是决定做一下。。结果一次A了 (???) 先把所有相等条件的合并,然后拿不 阅读全文
posted @ 2019-04-16 19:16 LuitaryiJack 阅读(111) 评论(0) 推荐(0)
摘要:辣鸡错误:把dfs和ldfs搞混。。。QAQ 题意:给定一个无向图,然后查询q次,求每次查询就在图上增加一条边,求剩余割边的个数。 先把边双缩点,然后预处理出LCA的倍增数组; 然后加边时,从u往上跳,把所有u到LCA(u,v)路径上割边去掉,即 --ans;v同理; 而向上跳的时候可以用并查集,把 阅读全文
posted @ 2019-04-12 14:15 LuitaryiJack 阅读(276) 评论(0) 推荐(0)
摘要:考试时先拿vector瞎搞不等信息,又没离散化,结果好像MLE;后来想起课上讲过用set维护,就开始瞎搞迭代器。。。QWQ我太菜了。。 用并查集维护相等信息,用set记录不相等的信息: 如果要求变量不等,若不和并查集矛盾,就拿set互相记录一下,YES;矛盾就NO 如果要求变量相等, 1.x记录的不 阅读全文
posted @ 2019-04-11 00:36 LuitaryiJack 阅读(122) 评论(0) 推荐(0)
摘要:因为开根号能使数字减小得非常快 所以开不了几次(6次?)很大的数就会变成1..... 所以我们可以维护区间最大值,若最大值>1,则继续递归子树,暴力修改叶节点,否则直接return (好像也可以维护区间被开方的次数,但我不会。。。QAQ) upd 2019.06.15 可以用树状数组做,如果这个数已 阅读全文
posted @ 2019-04-11 00:19 LuitaryiJack 阅读(157) 评论(0) 推荐(0)
摘要:并查集+按秩合并 传送门 大意:给出一张n个点m条边的无向图, 每条边有一个权值,有q个询问, 每次给出两个点s、t,找一条路, 使得路径上的边的最大权值最小。 我们可以发现,跑最小生成树会跑挂, 那么任意两点, 在生成树上有唯一路径, 而且这条路径上的最大危险值一定最小。 但是每次询问最大复杂度O 阅读全文
posted @ 2019-02-15 00:29 LuitaryiJack 阅读(311) 评论(0) 推荐(0)