CF936E 考虑将每一列的联通块看作一个大点,相邻的联通块连边,那么将建立出一个树形结构 膜$ywy$神犇 借图 我们把每个具体的点称作小点,每列的联通块称作大点 两小点之间的路径可以在树上唯一地表示出来,考虑怎么计算两小点之间的路径长度 一个小点移动到另一小点,可以看作两个点在某个大点内部相遇 ...
分类:
其他好文 时间:
2020-06-07 12:40:58
阅读次数:
99
传送门 考虑转化为图的模型,不难发现题目要求的就是总边数。 我们定义两种边: 两个人单向关注:用单向边相连; 两个人互相关注:用双向边相连。 不难发现一个联通块内如果全都由双向边相连,那么就会自动连成一个完全图,它的贡献就是 \(siz(siz-1)\)。 于是我们考虑维护具有这样性质的联通块,我们 ...
分类:
其他好文 时间:
2020-06-05 20:48:08
阅读次数:
81
题意 考虑点分治来枚举树上联通块,对于一个联通块,我们做有依赖性的树形DP即可,需要用单调队列优化多重背包。 有依赖性的树形DP code: #include<bits/stdc++.h> using namespace std; const int maxn=510; const int maxm ...
分类:
其他好文 时间:
2020-06-05 15:05:32
阅读次数:
53
对于一个连通图而言,有这样的一个性质:其需要画的笔数=度数为奇数的点数除以2 有了这个结论,用并查集求联通块就行 #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace s ...
分类:
其他好文 时间:
2020-05-25 09:30:02
阅读次数:
65
题目 "原题链接" 解说 抱歉有点事要忙只能引用了…… 这道题正解是用二分图,但是做完这道题的第二题才讲……所以我采用的我当时会的做法:并查集。 我们每有一个武器(a, b)时我们可以把它当做一条边(a, b)。 然后对于构图之后,一个大小为k联通块,我们发现有如下性质: ——如果这个联通块没有环( ...
分类:
其他好文 时间:
2020-05-04 19:19:06
阅读次数:
49
这道题有负权边,本来考虑可以用spfa,但是这个算法被卡了,因此只能转换思路。 我们发现因为负权边是单向的,且没有环,而正权是有环的,这说明这个图是一块一块的,负权边就是联通块和块的,因此这构成一个DAG 我们考虑在块内部使用迪杰斯特拉算法而在块和块之间使用拓扑排序来做 #include<cstdi ...
(题目参考: "BF数据结构题单" ) 普通并查集 代码实现 普通并查集支持 $2$ 种操作 —— 查询自己在哪个连通块和合并两个联通块(即连边) 操作 1:查询 对于我们一个点,查询的连通块记为 $id_u$,一个连通块的编号为这个连通块中被所有人指向的那个节点。 对于一次查询,我们向上找自己指向 ...
分类:
其他好文 时间:
2020-04-28 17:25:46
阅读次数:
53
给定一棵 $n$ 个点的树,初始全是白点,要求你做 $n$ 步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点。求可获得的最大权值。 Solution 显然如果选定了开始点,那么答案就是固定的 设开始点为根,则答案 ...
分类:
其他好文 时间:
2020-04-04 11:47:23
阅读次数:
73
LINK: "图" 求出一张图中 生成树森林或基环树+生成树森林的每个方案的贡献之和。n<=16,m<=(n 1) n/2. 图中只允许最多出现一个环 一个方案的贡献为 这张图的各个联通块大小之积。 (爆搜能拿很多分数 因为爆搜的上界并非2^m 类似于一个C(m,n)+C(m,n 1)+C(m,n ...
分类:
其他好文 时间:
2020-03-30 00:27:20
阅读次数:
83
"$\color{ 000000}{\texttt {CF526G}}$" 先考虑单次询问。 发现 $y$ 条路径的端点一定是叶子节点,产生的联通块最多会有 $2y$ 个叶子。 但还是不好做。 考虑一个相似的问题 一棵有根树,选 $k$ 个点,最大化这 $k$ 个点到根节点路径的并的大小。 选的点肯 ...
分类:
其他好文 时间:
2020-03-28 16:13:48
阅读次数:
76