
并查集
z听歌的小孩z
这个作者很懒,什么都没留下…
展开
-
Codeforces Global Round 5 C2. Balanced Removals (Harder) (并查集)
题目链接题意:三维空间中有偶数个点,每次你可以选择两个点将其删除,但是需要保证以两点为端点的长方体不能包含未删除的点。问怎样可以将所有点删除。题解:对x,y,z排序,先x, y相同的点删掉,再x相同的删掉,再把剩下的点删掉。这样保证每次删除的点对中间不会存在别的点。对于c2,因为n比较大,所以我用了并查集维护每个位置后第一个为空的位置。c1:#include<bits...原创 2019-10-17 14:52:01 · 263 阅读 · 0 评论 -
codeforces 1213 G Path Queries(并查集+离线)
题目链接小号终于上蓝了,嘿嘿。这个题比赛的时候一直在想假算法换根dp,赛后看题解没想到求联通块就完事了qwq。题意:给你一颗树,每条边都有一个权值。q次询问,每次询问一个qi,问这颗树有多少条路径,路径上边权最大值小于qi。题解:因为是离线查询,所以我们可以考虑离线做法。先将qi从小到大排序,然后依次更新答案。每次只将边权小于qi的边添加进图里,为啥要这样做呢,这样就能保证图里任意路径...原创 2019-09-01 21:08:11 · 191 阅读 · 0 评论 -
B-tokitsukaze and Hash Table(并查集)
题目链接题意:中文题面题解:这题很巧妙,用并查集维护每一个位置的下一个最近的没有放数字的位置(包括本身)。所以当我们要插入一个元素时,直接找到他的父亲(他父亲可能是本身),也就是他后面的第一个为空的位置,然后在此位置插入元素。此时他父亲也被插入了元素,所以我们要更新他父亲,找到他父亲下一个位置的父亲(这个父亲一定是空位置),这样就能保证每次插入都是最近的为空的位置了。#include...原创 2019-09-03 17:32:16 · 251 阅读 · 0 评论 -
抓捕盗窃犯(并查集)
题目链接题意:中文题面题解:罪犯之间可能会形成一个联通块,只要在每个联通块上设一个关卡就能抓获联通块上所有罪犯。并查集求出所有联通块,然后对罪犯个数排个序就行了。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5+10;int a[N],pre[N...原创 2019-09-03 17:52:25 · 138 阅读 · 0 评论 -
2019牛客暑期多校训练营(第九场)E . All men are brothers(并查集+线段树维护dp)
题目链接题意:有n个人互相不认识,m次操作给出x,y使x和y认识,间接认识也算认识。每次操作后问你有多少种方案使得从其中选取4个人互不认识。题解:互相认识的过程其实就是形成联通块的过程,这里我们可以使用并查集进行模拟。 然后我们得到一个个联通块,接下来就是排列组合了,每个联通块可以任选出一个人出来,与另外的联通块一起贡献答案。 设dp[i][j]表示前i个联通块选取j个人互不认识的...原创 2019-09-05 21:26:55 · 119 阅读 · 0 评论 -
The Preliminary Contest for ICPC Asia Xuzhou 2019 B. so easy(并查集 or 线段树)
题目链接题意:有n个点,有两种操作。1:标记x 点 无效; 2:查询x点后第一个有效点的下标(包括本身)。题解:比赛时想到了并查集写法,无奈并查集写搓了。。。。1:map + 并查集 ,每个位置维护下一个有效位置。#include<bits/stdc++.h>using namespace std;unordered_map<int, int>pre...原创 2019-09-10 14:57:38 · 269 阅读 · 0 评论