首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
All men are brothers
】的更多相关文章
All men are brothers
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&…
第9场 E-All men are brothers(并查集)
题目链接 题意: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个人可能会在几个回合中结交朋友. 输出要求: 输出…
2019牛客暑期多校训练营(第九场) E-All men are brothers(并查集+组合数学)
>传送门< 题意:最初有 n个人且互不认识,接下来 m行,每行有 x,y表示x和y交朋友,朋友关系满足自反性和传递性,每次输出当前选取4个人且互不认识的方案数. 思路:比赛的时候知道是用并查集做,然而也只是知道,具体的思维还没有想到这一块,还是太菜了,得去多做多想~ 并查集合并操作可以理解为使得两个集合的人互相成为朋友,也就是两个集合并在了一起,答案是要求从所有人中挑出四个互相不是朋友的四个人,比较基础的组合数学知识,但因为每个集合的大小预先不知,所以变得难以计算. 假设我们现在算出了合并前的…
2019牛客暑期多校训练营(第九场) E All men are brothers
传送门 知识点:并查集+组合数学 并查集合并操作可以理解为使得两个集合的人互相成为朋友,也就是两个集合并在了一起,答案是要求从所有人中挑出四个互相不是朋友的四个人,比较基础的组合数学知识,但因为每个集合的大小预先不知,所以变得难以计算. 假设我们现在算出了合并前的答案,在合并x和y时,设 \(sz[x]\) 为\(x\)所在集合的集合大小,\(sz[y]\) 同理.考虑这两个集合对答案的贡献.有三种情况: 从x所在集合中取一个人,然后再从其他非y集合中挑选出三个互不在同一集合的人 从y所在集合中…
2019牛客暑期多校训练营(第九场)All men are brothers——并查集&&组合数
题意 最初有 $n$ 个人且互不认识,接下来 $m$ 行,每行有 $x,y$,表示 $x$ 和 $y$ 交朋友,朋友关系满足自反性和传递性,每次输出当前选取4个人且互不认识的方案数. 分析 并查集维护集合的并. 考虑两个集合的并对答案的影响,总的来说就是减去集合x中选一个.集合y中选一个,剩下的选两个(这两个来自不同集合). 代码实现上体会 $cs$ 变量的作用. #include<bits/stdc++.h> using namespace std; typedef unsigned lon…
2019牛客多校第⑨场E All men are brothers(并查集+组合数学)
原题:https://ac.nowcoder.com/acm/contest/889/E 思路: 做并查集,维护每个集合大小,初始化操作前的总方案数,每次合并两个集合时减少的数量=合并的两个集合大小相乘, 再乘以从其他集合中选出2个不在一个集合内的方案数. 从其他集合中选出2个不在一个集合内的方案数=任选2个的方案数-来自同一个集合的方案数 #include <iostream> #include <cstdio> using namespace std; typedef long…
牛客多校第九场 E All men are brothers 并查集/组合论
题意: 一开始有n人互不认识,每回合有两个人认识,认识具有传递性,也就是相互认识的人组成小团体.现在问你每个回合,挑选四个人,这四个人互不认识,有多少种挑选方法. 题解: 认识不认识用并查集维护即可,重点在于如何统计挑选方法. 每个回合两个人互相认识,排除两个人本就在一个小团体中的情况,实际上就是两个小团体结合为一个. 那么变得无效化的挑选方法,实际上就是两个人分别来自这两个小团体,剩下两个人来自其他小团体的情况. 从其他集合的所有元素先任取两个,再去掉来自同一集合的两个的情况. 减少的数量等于…
2019牛客暑期多校训练营(第九场)E.All men are brothers(并查集+排列组合)
题意:现在有n个集合 每个集合大小为1 现在你可以把集合合并m次 每次会告诉你哪个集合合并 让你输出每次从不同的四个集合里各选出四个的组合方案 思路:我们可以想到用并查集模拟集合的合并 对于方案数 我们可以发现 其实就是合并之前的答案 减掉两个集合内的数的组合的方案数(详情理解代码) #include <bits/stdc++.h> using namespace std; const double pi = acos(-1.0); const int N = 1e6+7; const int…
2019nc#9
题号 标题 已通过代码 题解/讨论 通过率 团队的状态 A The power of Fibonacci 点击查看 进入讨论 69/227 未通过 B Quadratic equation 点击查看 高次剩余 391/888 未通过 C Inversions of all permutations 点击查看 进入讨论 28/61 未通过 D Knapsack Cryptosystem 点击查看 进入讨论 606/2251 通过 E All men are brothers 点击查看 进入讨论…
ZJUT11 多校赛补题记录
牛客第一场 (通过)Integration (https://ac.nowcoder.com/acm/contest/881/B) (未补)Euclidean Distance (https://ac.nowcoder.com/acm/contest/881/C) (未补)Parity of Tuples (https://ac.nowcoder.com/acm/contest/881/D) (已补)ABBA (https://ac.nowcoder.com/acm/contest/881/E)…