并查集
huanghongxun
这个作者很懒,什么都没留下…
展开
-
BZOJ 1050 [HAOI2006]旅行comf CODEVS 1001 舒适的路线 并查集
注意到M=5000,预判复杂度O(M^2)。所以我们考虑枚举最小边。最大边用类似kruskal的方法即可#include #include using namespace std;#define FOR(i,j,k) for(i=j;i<=k;i++)struct DisjointSet { int fa[501]; void init(int n) { int原创 2016-01-05 20:51:12 · 654 阅读 · 0 评论 -
POJ 2492 A Bug's Life 并查集
并查集操作的时候特别处理一下关系就好。#include <cstdio>#include <cstring>using namespace std;const int N = 5005;int fa[N], re[N];int find(int x) { int f = fa[x]; if (f == x) return x; fa[x] = find(f);原创 2016-03-16 23:55:52 · 494 阅读 · 0 评论 -
BZOJ 4423 AMPPZ 2013 Bytehattan 平面图 并查集
强制在线。。 由于是平面图肯定有可以利用的性质的。 发现删边的影响是,该边相接的两个格子被打通了。如果要删除的边相接的两个格子是通的,由对偶图可知,相当于把图切成2半,该边两端点被分开。#include <cstdio>int id[1500][1500];int fa[2250002];int find(int x) { return fa[x] == x ? x : fa[x] = f原创 2016-03-26 22:48:40 · 869 阅读 · 0 评论 -
BZOJ 1997 HNOI 2010 Planar 2-SAT
已知图和其哈密尔顿回路,判断是否是平面图。平面图要求边不相交,而哈密尔顿回路是圈(废话),其他的边都可以看作是在圈上,那么问题就变成POJ 3207了。。。但是发现构出来的图是无向图所以并查集就好了 然而并查集比Tarjan慢,毕竟复杂度多了个logn\log nTarjan:#include <cstdio>#include <algorithm>#include <cstring>usi原创 2016-03-27 10:50:37 · 432 阅读 · 0 评论 -
BZOJ 2342 SHOI 2011 双倍回文 Manacher
在Manacher处理出所有极长回文子串后。 枚举双倍回文子串的中心i,考虑快速查询出中心左侧的其他回文中心j,并满足:j+pj≥i,j−pj≥i−pij+p_j\geq i,j-p_j\geq i-p_i 即j+pj≥i,j≥i−12pij+p_j\geq i,j\geq i-\frac{1}{2}p_i 枚举的中心肯定都在#上。 发现由于i是单调增的(我们这么枚举),而j+pjj+p_j原创 2016-04-10 13:13:29 · 621 阅读 · 0 评论 -
BZOJ 1854|SCOI 2010|游戏|并查集
如果把不同武器之间的边连起来跑一边DFS是30%的数据。 但是一定要是不同武器之间连边么?武器内的两个值?连边后发现了性质:如果连通块形成了环,那么全部点都可以满足,否则满足n-1个,肯定是最大的那个不能满足。 因此考虑并查集维护连通块,合并的时候给小的打标记,形成环时,给最大的打标记。 那么从1开始一直往后直到没有标记这段点就是答案。#include <stdio.h>#define FO原创 2016-04-27 16:08:08 · 532 阅读 · 0 评论 -
Vijos 1034 家族 并查集
Vijos上编译成功VijosEx via JudgeDaemon2/13.7.4.0 via libjudge编译成功测试数据 #0: Accepted, time = 15 ms, mem = 452 KiB, score = 10测试数据 #1: Accepted, time = 0 ms, mem = 460 KiB, score = 10测试数据原创 2013-07-24 20:34:10 · 903 阅读 · 0 评论 -
BZOJ 4025|二分图|CDQ分治|并查集|LCT
一条边有存在的时间[start,end][start,end],问每个时刻该时图是不是二分图。是二分图就不存在奇环,考虑并查集维护最大生成树,是否是奇环也很好判断了,两点间距离就是dis[a]+dis[b]-2*dis[LCA],由于我们只关心奇偶性,因此把加减法换成xor也是可以的,然后就变成了dis[a]^dis[b]了,加上非树边就是环了。那么我们就考虑扫一遍时间,然后到了对应时间就加入边、删原创 2016-04-27 17:51:22 · 1144 阅读 · 0 评论 -
Southeastern European Regional Programming Contest (SEERC) 2017
A: Concerts题目大意有 26 种演唱会,John 希望按照某个顺序看某些类型的演唱会,但是看完某种类型的演唱会后需要至少休息一定的天数才能继续看演唱会,问有多少种看演唱会的方案题解简单的 dp,但是 CodeForces 上的数据范围是假的。。花了好些时间检查为什么 RE。。#include <bits/stdc++.h>using namespace std;...原创 2018-10-25 17:50:20 · 428 阅读 · 0 评论