题意 最初有 $n$ 个人且互不认识,接下来 $m$ 行,每行有 $x,y$,表示 $x$ 和 $y$ 交朋友,朋友关系满足自反性和传递性,每次输出当前选取4个人且互不认识的方案数. 分析 并查集维护集合的并. 考虑两个集合的并对答案的影响,总的来说就是减去集合x中选一个.集合y中选一个,剩下的选两个(这两个来自不同集合). 代码实现上体会 $cs$ 变量的作用. #include<bits/stdc++.h> using namespace std; typedef unsigned lon…
原题:https://ac.nowcoder.com/acm/contest/889/E 思路: 做并查集,维护每个集合大小,初始化操作前的总方案数,每次合并两个集合时减少的数量=合并的两个集合大小相乘, 再乘以从其他集合中选出2个不在一个集合内的方案数. 从其他集合中选出2个不在一个集合内的方案数=任选2个的方案数-来自同一个集合的方案数 #include <iostream> #include <cstdio> using namespace std; typedef long…
题意: 一开始有n人互不认识,每回合有两个人认识,认识具有传递性,也就是相互认识的人组成小团体.现在问你每个回合,挑选四个人,这四个人互不认识,有多少种挑选方法. 题解: 认识不认识用并查集维护即可,重点在于如何统计挑选方法. 每个回合两个人互相认识,排除两个人本就在一个小团体中的情况,实际上就是两个小团体结合为一个. 那么变得无效化的挑选方法,实际上就是两个人分别来自这两个小团体,剩下两个人来自其他小团体的情况. 从其他集合的所有元素先任取两个,再去掉来自同一集合的两个的情况. 减少的数量等于…
题意:现在有n个集合 每个集合大小为1 现在你可以把集合合并m次 每次会告诉你哪个集合合并 让你输出每次从不同的四个集合里各选出四个的组合方案 思路:我们可以想到用并查集模拟集合的合并 对于方案数 我们可以发现 其实就是合并之前的答案 减掉两个集合内的数的组合的方案数(详情理解代码) #include <bits/stdc++.h> using namespace std; const double pi = acos(-1.0); const int N = 1e6+7; const int…
目录 题意: 分析: @(2019牛客暑期多校训练营(第八场)E_Explorer) 题意: 链接 题目类似:CF366D,Gym101652T 本题给你\(n(100000)\)个点\(m(10000)\)条边,每无向边允许通过编号在\([Li,Ri](1\le Li\le Ri\le 1e9)\)内的人,问从\(1\)到\(n\)能通过多少个人. 分析: 赛中艹了30多发暴力无济于事... 因为以前做过一道数据范围1000的原题,当时做法好像是离散化后枚举区间暴力跑\(dfs\)查询或者带着…
>传送门< 题意:最初有 n个人且互不认识,接下来 m行,每行有 x,y表示x和y交朋友,朋友关系满足自反性和传递性,每次输出当前选取4个人且互不认识的方案数. 思路:比赛的时候知道是用并查集做,然而也只是知道,具体的思维还没有想到这一块,还是太菜了,得去多做多想~ 并查集合并操作可以理解为使得两个集合的人互相成为朋友,也就是两个集合并在了一起,答案是要求从所有人中挑出四个互相不是朋友的四个人,比较基础的组合数学知识,但因为每个集合的大小预先不知,所以变得难以计算. 假设我们现在算出了合并前的…
题目链接:戳这里 学习博客:戳这里 题意: 有n个空位,给一个数x,如果x%n位数空的,就把x放上去,如果不是空的,就看(x+1)%n是不是空的. 现在给一个已经放过数的状态,求放数字的顺序.(要求字典序最小 解题思路: 用一个优先队列.如果序列里的x的位子就是x%n,证明这个数是最开始就放好的.加入优先队列. 每次出一个最小元素.把它填入位子a,然后用并查集把a和a+1合并,看看现在a的祖先能不能被加入队列. 用优先队列维护很容易想到,关键是怎么维护选出的数的位置,这里用并查集建边很巧妙的解决…
All men are brothers 牛客多校第九场E 给定n个人,起初互不认识 然后m各阶段 每个阶段有两个人x.y认识 求每个阶段选出四个人互不认识的方式 并查集 #include<bits/stdc++.h> using namespace std; typedef unsigned long long ll; ll f[]; ll siz[]; ///维护当前连通分支大小 ll n,m; ll K; ll tm=;///所有连通分支大小的平方求和 void init() { ;i&…
春训团队赛第四场 ID A B C D E F G H I J K L M AC O O O O O O O O O 补题 ? ? O O 传送门 题目链接(CF Gym102021) 题解链接(pdf) 代码 & 简易题解 [A]:LCA 给定一个格状迷宫,保证任意点均可达,且任意两格点间有且仅有一条简单路径. 给定一组移动序列,求按照这个序列走的累计路程. 按照题意对图预处理,得到一棵树,对于每对询问求 \(\text{LCA}\) 的同时求距离,累加即为答案. 一开始 \(\text{RE…
题目链接 题意:n个人,m次操作,每次操作使得两个人(x,y)成为朋友,朋友的关系是可以传递的,计算执行每次操作后,选择四个人两两都不是朋友的不同方案的数目. 数据范围:(n <= 100000,m <= 200000) (1 <= x <= n,1 <= y <= n,x≠y) 输入要求: 第一行包含两个整数,n和m 在下面的m行中,第i行包含两个整数x和y,这意味着第x个人和 y 这个人在第一轮交友. 第x个人和第y个人可能会在几个回合中结交朋友. 输出要求: 输出…