
并查集
文章平均质量分 78
荼白777
这个作者很懒,什么都没留下…
展开
-
240. 食物链——并查集扩展域&带边权
题面 Acwing240 思路 思路跟奇偶游戏一样; 不过这里是一个三角结构,不是对称的,需要注意一下; 扩展域并查集 #include <iostream> using namespace std; const int N = 5e4+10; const int M = 3*N,B = 5e4; int n,m,p[M]; int _find(int x){ if(x == p[x]) return x; return p[x] = _find(p[x]); } in原创 2021-10-03 15:50:36 · 159 阅读 · 0 评论 -
239. 奇偶游戏 —— 并查集带权 & 扩展域
带权与扩展域区别? 带权并查集的复杂度和分类的数量无关,而扩展域是有关的。 所以当类别很多时,只能用带权并查集。 题面 AcWing239 带权并查集 每次输入会告诉我们区间[L,R][L,R][L,R]有奇数个一或者偶数个一; 我们发现,因为取值只有0和1; 如果我们将数组SSS看成是前缀和数组; 那么相当于每次告诉我们S(R)−S(L−1)S(R)-S(L-1)S(R)−S(L−1)的结果是奇数还是偶数; 如果结果是奇数,那么说明S(R)和S(L−1)S(R)和S(L-1)S(R)和S(L−1)的奇原创 2021-10-02 23:12:26 · 296 阅读 · 0 评论 -
格子游戏——并查集+二维坐标映射成一维方法
引入 假设给我们一个n∗mn*mn∗m的矩形,里面依次填入坐标,从(1,1)(1,1)(1,1)开始; 映射方式其实就是将这些坐标依次填入一个n∗mn*mn∗m的一维数组; 解释 公式为(x−1)∗m+y(x-1)*m+y(x−1)∗m+y 其中(x−1)∗m(x-1)*m(x−1)∗m表示在当前数之前已经有几个数; 而+y+y+y则代表自己是第几个数; 比如上图中的(2,1)(2,1)(2,1)代入公式,前面有mmm个数,自己是第1个数;因此映射到第m+1m+1m+1位; 例题 具体见代码中的get原创 2021-09-26 19:40:36 · 1753 阅读 · 0 评论