摘要:
传送门 思维!重要的是思维! 题目让删边,然而并查集不好删边(并!查!集!啊) 我们离线处理,从后往前添边,这样并查集就可以用了。 用并查集维护连通块个数即可。 ——代码 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 阅读全文
posted @ 2017-06-15 20:54
zht467
阅读(115)
评论(0)
推荐(0)
摘要:
传送门 1.贪心 + 优先队列 按照时间排序从前往后 很简单不多说 ——代码 1 #include <queue> 2 #include <cstdio> 3 #include <iostream> 4 #include <algorithm> 5 #define N 10001 6 7 int n 阅读全文
posted @ 2017-06-15 19:06
zht467
阅读(168)
评论(0)
推荐(0)
摘要:
传送门 up[i] 表示一个木块上面有多少个 all[i] 表示整个连通块内有多少个 那么 一个木块下面的木块个数为 all[root[i]] - up[i] - 1 注意:up[i] 可以在 find 函数中维护,而 all[i] 不好维护,那么我们只需要祖先节点的 all[i] 表示整个连通块内 阅读全文
posted @ 2017-06-15 18:12
zht467
阅读(155)
评论(0)
推荐(0)
摘要:
传送门 1.并查集骗分(数据太水,比正解还快。。。) 我们知道,并查集有一步操作叫“路径压缩”,但是本题的并查集我们不能路径压缩,否则就无法进行Destroy操作。那每一步操作我们应该怎么做呢? 对于Connect x y操作,先把x变成集合的根,之后root[x] = y; 对于Destroy x 阅读全文
posted @ 2017-06-15 15:50
zht467
阅读(196)
评论(0)
推荐(0)
摘要:
传送门 通过并查集统计集合个数,easy ——代码 1 #include <cstdio> 2 #include <iostream> 3 #define N 1000001 4 5 int n, m; 6 int f[N], num[N]; 7 8 inline int read() 9 { 10 阅读全文
posted @ 2017-06-15 14:38
zht467
阅读(88)
评论(0)
推荐(0)
摘要:
传送门 题意: n个人分成三组,玩石头剪子布游戏,同一组的人只能出同样固定的的手势,其中有一个是裁判不属于任何组,可以出任意手势,给出m个信息x op y 表示x,y是从三个组里面随机抽取的或者是裁判,他们之间的输赢关系。让你判断最少在第几组信息时,可以唯一判断出裁判,并将裁判号,以及在第几组后判断 阅读全文
posted @ 2017-06-15 14:22
zht467
阅读(159)
评论(0)
推荐(0)
摘要:
传送门 和某题类似,只不过奇偶换成了和。 ——代码 1 #include <cstdio> 2 #include <iostream> 3 #define N 1000001 4 5 int n, m, ans; 6 int f[N], d[N]; 7 8 inline int read() 9 { 阅读全文
posted @ 2017-06-15 10:41
zht467
阅读(97)
评论(0)
推荐(0)
摘要:
传送门 题意:有一个长度已知的01串,给出[l,r]这个区间中的1是奇数个还是偶数个,给出一系列语句问前几个是正确的 思路:如果我们知道[1,2][3,4][5,6]区间的信息,我们可以求出[1,6]的信息 可以将将闭区间[x,y]转换成(x - 1,y]左开右闭区间 那么我们可以用并查集来做,每次 阅读全文
posted @ 2017-06-15 09:46
zht467
阅读(125)
评论(0)
推荐(0)
摘要:
传送门 1.开两个并查集 f[x] 表示 x 的同类 f[x + n] 表示 x 的敌人 ——代码 1 #include <cstdio> 2 #include <iostream> 3 #define N 200001 4 5 int T, n, m; 6 int f[N]; 7 8 inline 阅读全文
posted @ 2017-06-15 08:42
zht467
阅读(133)
评论(0)
推荐(0)

浙公网安备 33010602011771号