并查集
文章平均质量分 70
冷月残星
这个作者很懒,什么都没留下…
展开
-
并查集(Destroying Array,cf 722C)
并查集,以前只会用来做模板题以及实现最小生成树。所以做题时从来没有考虑过用并查集优化什么的。通过这次比赛,学到了。#include#define maxn 100010using namespace std;typedef long long ll;ll n;ll a[maxn];ll d[maxn];ll f[maxn];ll v[maxn];ll s[maxn]原创 2016-10-02 17:00:51 · 443 阅读 · 0 评论 -
并查集(易爆物,LA 3644)
看清题啊大哥。。。人家说存在k个,正好包含k种。你看成了刚好k个,刚好k种,然后在那用什么set搞来搞去,还出了bug然后刚好过了样例,神逗。先验证解法的正确性,再去编写代码,别浪呀,万一没想清楚甚至读错题就爆炸啦。好吧,其实中文题目还是有点没说清楚的吧。以后还是看英文原题好了。英文原题就是说如果将N个不同的化合物放在一起恰好有N种元素,就会爆炸,还用成环解释了一波。这不就原创 2016-12-08 21:06:01 · 383 阅读 · 0 评论 -
并查集(合作网络,LA 3027)
并查集不就是插入时简单的合并两棵树,然后查找时让沿途所有节点都指向根节点吗?而题目又只问节点到根节点的距离,那就在并查集执行的过程中多维护一个量d[i]表示i节点到其父节点的距离。查找时只要跑一下并查集(即维护一下d[i]),然后直接输出结果就好了。插入时就修改一下父指针以及其到父节点的距离就好了。说明自己对并查集只是一知半解,没能理解到其中的不变式,才会弄了那么久。只能多原创 2016-12-09 12:16:09 · 302 阅读 · 0 评论 -
并查集(Mahmoud and a Dictionary,cf 766D)
用并查集维护单词的集合,在同一个集合内的单词互有同义或反义的关系,在不同集合内的单词没有任何关系。那么每个集合内的单词,可以分为两个类别,同一类别的互为同义,不同类别的互为反义。我们可以用d[x]来表示这个类别,并在并查集递归与合并的过程维护d[x]即可。由于不同集合内的单词可以事先判断出没有任何关系,所以所有单词都可以只用两种不同的记号来标记类别,取记号0,1就很方便。一是因为很顺手原创 2017-02-09 10:19:28 · 290 阅读 · 0 评论