并查集算连通块的数量,集合的个数就是必然不开心的人数,再跑bfs,用优先队列维护~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; vector<int> g[maxn]; int father[maxn]; i ...
分类:
其他好文 时间:
2020-02-13 19:20:12
阅读次数:
48
大水题,dfs判连通块的数量,bfs每个点找朋友圈的最大直径~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; vector<int> g[maxn]; bool visit[maxn]; int N; int ma ...
分类:
其他好文 时间:
2020-02-13 13:20:03
阅读次数:
84
dfs判断连通块的数量,prim算法建立最小生成树并判断是否唯一~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; const int inf=1e9; int g[maxn][maxn]; int d[maxn]; ...
分类:
其他好文 时间:
2020-02-13 13:19:31
阅读次数:
98
题面大意:有2*N的格子,每个格子可以涂成白色或者黑色,问有k个连通块的涂色方案数 N<=103,k<=2*103 我的错误思路:我没看懂题目对不起呜呜呜... 正解思路: 首先看到N<=103,反正凭我的感觉,一般来说103或者104这样的,很可能是DP或者记忆化,也就是N2的复杂度,100的话可 ...
分类:
其他好文 时间:
2020-02-08 23:11:51
阅读次数:
88
"G Xor MST" 题解 最小异或生成树 先把所有二进制数上Trie树,然后为了使得异或最小,根据异或的性质,trie树的左右子树都应该自己先连成一个连通块,然后在两个连通块内找到两个数使得异或值最小,这样就能进行连通了。 左右子树的话递归下去处理,在计算两个子树上异或值最小的时候用启发式合并, ...
分类:
其他好文 时间:
2020-02-07 22:16:54
阅读次数:
84
1.208 UOIP十合一 问你某张图有多少个边集中不存在环。 1.DAG 2.多个边数很少的连通块 3.多个连通块,且其中仅含有一个环 4.分层图,每一层仅有4个点 5.多个强连通分量,每个中的边数很少 6.完全图 7.8 n很小的有向图 1.DAG 除了重边之外的所有边的个数为$c$。 答案为: ...
分类:
其他好文 时间:
2020-02-07 21:03:40
阅读次数:
99
题目链接 https://atcoder.jp/contests/agc029/tasks/agc029_e 题解 写了一半发现假了然后强行乱改一通改对了…… 我们用“$u$子树内小于$x$的连通块”来表示$u$子树内到$u$路径上的点都小于$x$的点(包括$u$)的集合,集合的大小用$C(u,x) ...
分类:
其他好文 时间:
2020-02-06 16:28:13
阅读次数:
98
"Link" 下文中的点指的是题目给的$n$个连通块。 因为题目给的式子只与度数和点权相关,因此考虑Prufer序列。 枚举每个点在Prufer序列中的出现次数,那么此时的贡献就是Prufer序列的个数乘上该生成树的价值。 $ans=(n 2)!\sum\limits_{\sum d_i=n 2}\ ...
分类:
其他好文 时间:
2020-02-04 22:00:30
阅读次数:
95
标算太NB 我觉得用这种做法,这道题难度只有2500 如果原图不是二分图显然无解。否则对于一个点数$\geq 2$的连通块的两边可以缩成两个点,它们不能染相同的颜色。对于独立的点可以新建一个$[0,10^9]$的虚点让这个点和虚点不染相同颜色。然后就变成了有$n$个区间、$\frac{n}{2}$对 ...
分类:
其他好文 时间:
2020-02-04 00:50:31
阅读次数:
111
树的重心 定义:树的重心也叫作树的质心。对于一颗无根树,找到一个点,使得把树变成以该点为根的有根树时,最大子树的结点数最小。换句话说,删除这个点后最大连通块(一定是树)的结点数最小。 性质: 1. 树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个距离和,他们的距离和一样。 2. 把两 ...
分类:
其他好文 时间:
2020-02-02 15:43:31
阅读次数:
52