摘要: 平衡树 [TOC] 概述 一种数据结构。代码巨长。 其实平衡树的思想挺简单的,代码也不难写。 平衡树满足的性质: $1、$左儿子权值小于父亲,右儿子权值大于父亲 $2、$左右儿子分别是平衡树 若仅是这样,很容易被毒瘤出题人卡成链,所以我们再人为的(虽然之前的性质也是人为的)给他加上一个性质$k$,让 阅读全文
posted @ 2018-11-05 16:19 Kylin_Seven 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 割边 割边同 "割点" 同理。 若一个点是割边,则他所连接的$dfn$值较大的点的$low$必然比他连接的另一个点的$dfs$小。 cpp include using namespace std; int head[100],next[100],to[100],cnt,num,n,m,dfn[100 阅读全文
posted @ 2018-11-01 16:21 Kylin_Seven 阅读(436) 评论(2) 推荐(0) 编辑
摘要: 割点 割点:若该点被去掉之后整个图由连通图变为非联通图,则该点为割点。 考虑什么时候一个点是割点。 同样使用$dfs$序。若在$dfs$树中,该点为根节点,且他有至少两个儿子,则他是割点;若他不是根节点,但他的儿子们能到达的$dfn$值最小的点的$dfn$值大于他的,则他是割点。 用强连通分量的思路 阅读全文
posted @ 2018-11-01 16:17 Kylin_Seven 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 缩点 "预备知识 强连通分量" 缩点就是在求完强连通分量后新建一个结构体,将每一个强连通分量看做一个新的点,建一个新的图。 "P3387" cpp include include using namespace std; long long read(){ long long x = 0; int 阅读全文
posted @ 2018-11-01 14:41 Kylin_Seven 阅读(327) 评论(0) 推荐(1) 编辑
摘要: 强连通分量 $Tarjan$ 强连通分量是神马东东?就是有向图中一群能相互到达的点。比如说这么一个图: 中间那个红色的就是强连通分量。 在很多题中,一个强连通分量可以看做一个点,但若直接跑最短路的话,成环显然不好处理,所以要先预处理将他们看成一个点。这是稍后的 "缩点" 。这里先讲怎么求强联通分量。 阅读全文
posted @ 2018-11-01 14:36 Kylin_Seven 阅读(363) 评论(0) 推荐(1) 编辑
摘要: "牛慢跑" 据说是$k$短路模板,要用$A^ $,然而我不会。我是用拓扑排序加堆优化广搜水过去的。第一道完全靠自己做出来的紫题,调了两个小时,交了两遍。果然我还是太菜了。 正解的话,可以看 "红太阳的博客" 题面 给出$n$个点$m$条边的有向无环图,求从$n$到$1$的前$k$条最短路的值。 $1 阅读全文
posted @ 2018-11-01 11:21 Kylin_Seven 阅读(200) 评论(0) 推荐(0) 编辑
摘要: "异或和" (权值树状数组) 题目描述 在加里敦中学的小明最近爱上了数学竞赛,很多数学竞赛的题都是与序列的连续和相关的。所以对于一个序列,求出它们所有的连续和来说,小明觉得十分的简单。但今天小明遇到了一个序列和的难题,这个题目不仅要求你快速的求出所有的连续和,还要快速的求出这些连续和的异或值。小明很 阅读全文
posted @ 2018-10-31 18:26 Kylin_Seven 阅读(702) 评论(0) 推荐(2) 编辑
摘要: 二分图匹配 这是一个绿与被绿的故事...... 首先二分图就是一张图能分成两个点集,集合内部没有连边,两集合之间有若干连边 现在有这么一张图 要求最多有多少对点能匹配成功 首先,我们给张起灵匹配。我们发现他只能和吴邪匹配,那好,我们给他们安排上。 现在这张图长这样(张海客:族长你不要我们了) 现在给 阅读全文
posted @ 2018-10-30 20:14 Kylin_Seven 阅读(240) 评论(1) 推荐(0) 编辑
摘要: 判环 $SPFA$判负环 亲身试验$dfs$过不了,会被卡成$n^n$。传统$spfa$,判断一个点的入队次数,超过$n$就有负环 $Floyed$无向图求最小环 cpp include include using namespace std; const int inf(0x1f1f1f1f) ; 阅读全文
posted @ 2018-10-30 19:38 Kylin_Seven 阅读(151) 评论(0) 推荐(1) 编辑
摘要: 最短路 [TOC] $Floyed$ $n^3$复杂度,数据小可以用,也可以用来判断图是否连通、求环。 最短路计数 求到每个点有多少条最短路 更新最短路的同时记录有多少条最短路。若有更短的,则条数等于上一个点的最短路条数,若相等则最短路条数$+1$ cpp include include inclu 阅读全文
posted @ 2018-10-30 19:30 Kylin_Seven 阅读(300) 评论(0) 推荐(1) 编辑