并查集
小胡同的诗
千里之行,始于足下
展开
-
hdu1213How Many Tables(并查集入门)
题目大意:a认识b,b认识c,他们三个相互认识,为一组,依次给你一张数据表关于所有人的关系表 解题思路:找相同类的结构,并查集的解题思路,poj食物链的一种情况,并查集入门 AC代码如下: #include #include #include using namespace std; #define Max_N 2000 int book[Max_N]; void init(int n)原创 2018-01-03 16:10:49 · 194 阅读 · 0 评论 -
hdu通畅工程(并查集入门)
思路:题目给你城市之间的道路信息,即哪些城市畅通,1如果和2畅通,2又和3畅通,则1和3是畅通的,并查集思想,找场上有几条畅通的干路呗(就是擒贼先擒王的几个王嘛) AC代码如下:#include #include #include using namespace std; #include #include int city[2000]; void init(int n) { int i;原创 2017-12-29 16:14:49 · 170 阅读 · 0 评论 -
牛客练习赛41
题目链接:牛客练习赛41 官方题解:题解 A题 解题思路:考虑m,n相等或者m为1时一定能完全成功翻转,其他情况例如m=n-1或m=n-2均无法成功,交了一发,1A。 AC代码: #include <bits/stdc++.h> using namespace std; int main() { int T,n,m; cin >> T; whi...原创 2019-03-01 23:33:41 · 204 阅读 · 0 评论 -
PAT --甲级1013(1013 Battle Over Cities)
1013 Battle Over Cities (25 分) It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We ...原创 2019-04-24 18:04:54 · 174 阅读 · 0 评论 -
树上最近公共祖先(Tarjan+并查集)
算法描述 tarjan算法在求强联通分量效率十分高,核心思想是维护的dfn和low数组;而对于树上公共祖先问题也能离线地处理询问,算法复杂度O(n+q)O(n+q)O(n+q)。算法是:后序遍历树上的结点,每次的子孙结点的祖先集合合并到其父亲结点中(并查集),之后去查询当前结点是否有询问,有询问且两个点都已经访问过那么这个两个点的LCA是另外那个点的祖先。由于是后序遍历的缘故,当前结点和另外那个结...原创 2019-08-19 15:37:01 · 611 阅读 · 0 评论 -
最多连续数的子集(并查集+启发式合并)
题目描述:给一个整数数组a[], 找到其中包含最多连续数的子集,比如给:15, 7, 12, 6, 14, 13, 9, 11,则返回: 5:[11, 12, 13, 14, 15] 思路:初始化每个树子集一个集合,预处理每个数的数值哈希到一张表中,内容存下标,扫一次数组,每次取找val+1以及val-1的数,如果找到了把两者的集合合并,合并时可以按子集的大小进行启发式合并,即小的集合合并到多的集...原创 2019-09-08 23:33:25 · 202 阅读 · 0 评论