前言: 每个子树的重心(p)的定义:删去该点p后,以x为根的子树的所有联通块的大小均不超过 siz[x] / 2 根据这个重心的定义可以知道一棵子树的重心必定在他自己所在的重链中. 所以每次找到他的重儿子为根的子树的重心, 不符合的话就沿着重链往上走直至找到复合要求的重心. 模版题:http://c ...
分类:
其他好文 时间:
2020-02-19 20:42:25
阅读次数:
81
JSOI 2008 最小生成树计数 今天的题目终于良心一点辣 一个套路+模版题。 考虑昨天讲的那几个结论,我们有当我们只保留最小生成树中权值不超过 $ k $ 的边的时候形成的联通块是一定的。 我们可以先拿 kruskal 跑一棵最小生成树,然后我们可以从小到大枚举边权,把所有除开枚举到的边权的边全 ...
分类:
Web程序 时间:
2020-02-13 11:17:20
阅读次数:
92
题外话 开始没看懂D题意跳了,发现F题难写又跳回来了。。 语文好差,码力好差 A 判第一个$1$跟最后一个$1$中$0$的个数即可 B 乘乘除除就完事了 C 用并查集判一下联通,每个联通块内必须为一条链 E 枚举$t$串的断点,然后$f_{i,j}$表示匹配到s串的第$i$个,$t$串的第一节的第$ ...
分类:
其他好文 时间:
2020-02-13 09:33:05
阅读次数:
41
"Link" Solution 最小生成树有两个性质: 在任意最小生成树上,任意权值的边数目是相同的; 任意最小生成树,在加完了小于某权值的边之后,图的联通性是一样的。 所以先跑一遍Kruskal,对每条边处理出加入权值比他小的边之后两端点所在的联通块。 对于每组询问用,把边按边权排序之后,并查集c ...
分类:
其他好文 时间:
2020-01-18 10:20:05
阅读次数:
57
正确的树分块做法 这是一种本题对所有树都适用的树分块做法。 ___ 前置:优化思路 树分块的瓶颈在于,当树为菊花图时,访问的联通块比较多。本质上说,单次询问访问了许多边,个数为$O(n)$。 所以想办法使得不再访问那么多边。 正题:做法 我们对原树进行分块,一定要保证是块内连通,设块的大小为$O(S ...
分类:
其他好文 时间:
2020-01-11 14:46:31
阅读次数:
55
HDU 5322 Hope 考虑 $ dp[n] $ 表示 长度为 $ n $ 的所有排列的答案。 首先,对于一个排列来说,如果最大值在 $ i $ 位置,那么前 $ i 1 $ 个数必然与 $ i $ 在一个联通块,且必然不会与 $ i $ 后面的数字在一个连通块。 那么考虑一种常用的排列的处理技 ...
分类:
其他好文 时间:
2019-12-21 20:23:33
阅读次数:
74
C 树的性质是点-边=1 森林联通块计数都可以这么做所以直接维护前缀和再把边界处理一下就好了 //Love and Freedom. #include<algorithm> #include<cstring> #include<cmath> #include<cstdio> #define inf ...
分类:
其他好文 时间:
2019-12-03 23:54:45
阅读次数:
183
貌似是比较水的一场 可是我依然8会做 C 发现除了第一步以外的走法都不会受到锁的影响并且一定选四个方向距离最近的径直走过去 那么第一步能走到的联通块取个min就好了 (我竟然第一发特别认真的写了一个DFS) //Love and Freedom. #include<algorithm> #inclu ...
分类:
其他好文 时间:
2019-12-02 20:48:10
阅读次数:
112
description analysis 从求联通块出发根本没做法,于是考虑连通块里面的边 对于一个询问$[l,r]$,一条边的左端点$≥l$且右端点$≤r$才在这个区间的点之间 于是对于边和询问排序,依次把边加入树状数组,然后查询当前询问区间里的边条数就知道了联通块个数 code ...
分类:
其他好文 时间:
2019-11-02 09:49:29
阅读次数:
93
来源:Comet OJ Contest 13 一眼并查集,然后发现这题 tmd 要卡常数的说卧槽... 发现这里又要用并查集跳过访问点,又要用并查集维护联通块,于是开俩并查集分别维护就好了 一开始 XJB 搞了两个并查集建了个完全的连接方式,然后 xjb 写了堆合并,调了一会儿交上去喜见 TLE ( ...
分类:
其他好文 时间:
2019-10-28 11:04:06
阅读次数:
134