随笔分类 -  图论

摘要:图论 奇怪的树 prufer序列 树转序列 可以使用一个 prufer 数列唯一地表示一个带标号的树。 这个序列的生成算法是,每次选择编号最小的叶节点删除,并记录与其相邻的那个点。剩下两个点时结束。 显然,我们用堆维护可以做到 O(nlogn) 。 这个的实现是简单的,而我们可以通过另外一个 阅读全文
posted @ 2022-10-20 14:30 cbdsopa 阅读(82) 评论(1) 推荐(2) 编辑
摘要:缩点 之前提过,不再多说 link 去无用边优化建图 最为简单的就是去重边,删自环。 稍微升级一点就是最小生成树。 一个例题 CF1095F Make It Connected solution 前后缀优化建图 解决对于一个点向一段前缀或者后缀连边的问题。 具体的做法是将整个区间建立一条长为 \(n 阅读全文
posted @ 2022-04-14 22:28 cbdsopa 阅读(135) 评论(0) 推荐(0) 编辑
摘要:偏序集合 一个集合 P 内的 满足偏序则 P 为 偏序集合。 为偏序则其具有 自反性,反对称性,递移性 ,即对于 a,b,cP ,满足: aa 如果 abba ,那么 a=b 如果 ab 且 $b 阅读全文
posted @ 2022-04-11 18:24 cbdsopa 阅读(248) 评论(0) 推荐(0) 编辑
摘要:实链剖分 就是可以随意乱剖,想干嘛干嘛的剖分。我们面对动态树问题(树形会变化的问题),用实链剖分可以灵活的维护。然后因为实链剖分比较灵活,我们类比重链剖分,也考虑使用一种数据结构维护这个树上信息。论灵活度,相比线段树来说,splay 是更好的选择。 LCT 也叫 link-cut tree ,用于维 阅读全文
posted @ 2022-03-23 11:09 cbdsopa 阅读(36) 评论(0) 推荐(0) 编辑
摘要:最小生成树的性质 总结几点性质: 性质1: 对于一张边权互不相同的无向图,其存在唯一的最小生成树。 证明: 这个可以反证法证明,若存在两棵不同的最小生成树称为 TT,记一条边 eT,eT ,那么显然我们在 T 中删去这条边会得到两个 阅读全文
posted @ 2022-03-21 16:37 cbdsopa 阅读(855) 评论(0) 推荐(0) 编辑
摘要:虚树(Virtual Tree) 题目引入 [SDOI2011]消耗战 题目大意:一颗树,上面有 k 个资源点,拆一些边,使得 1 号点不能到达任何资源点。现在要使得拆除的边的权值和最小。总共有 m 次询问,每次给出资源点。 $n\le 2.5\times 10^5,m\le 阅读全文
posted @ 2022-03-13 17:15 cbdsopa 阅读(222) 评论(0) 推荐(0) 编辑
摘要:前置知识 点双连通分量 圆方树 用于维护仙人掌或无向图的重构图。其实本质上就是缩了点,但又没完全缩点的点双连通分量。 直接告诉你构建方法,先求出点双连通分量,然后为每个点双连通分量创造一个方点,而原图上的点为圆点。我们在新图上把一个连通分量内的所有点与对应方点连接,得到一棵树(或者不连通图得到森林) 阅读全文
posted @ 2022-03-12 10:42 cbdsopa 阅读(77) 评论(0) 推荐(0) 编辑
摘要:前置知识 Tarjan入门 定义 对于无向图中的两点 u,v,若无论删去哪条边都不能使得它们不连通,那么我们称 u,v 边双连通。 对于无向图中的两点 u,v,若无论删去哪个点都不能使得它们不连通,那么我们称 u,v 点双连通。 其中边双连通具有传递性,点双连通不具有 阅读全文
posted @ 2022-03-10 21:07 cbdsopa 阅读(71) 评论(0) 推荐(0) 编辑
摘要:我当时知道ST表可以 O(1) 求 LCA 的时候是极为震惊的,可以在需要反复使用 LCA 的时候卡常使用。 ST表!用于解决 RMQ问题 ST表 我可能写得不好,看专业的 怎么实现? 考虑把求 LCA 转换为 RMQ问题。我们对于树求一遍欧拉序,就是那个回溯也会记录的那个。我们处理出每个数 阅读全文
posted @ 2022-02-24 11:37 cbdsopa 阅读(53) 评论(0) 推荐(0) 编辑
摘要:预处理复杂度O(n log n),查询复杂度O(log n)。 主要思想是倍增,通过预处理出夫亲的倍增数组实现快速求LCA 1 的父节点取 0 是为了方便树上差分,1 的深度设置得比 0 大是为了防止在求LCA时跳到0. 挺好理解的。 #include<bits/stdc++. 阅读全文
posted @ 2022-02-24 11:36 cbdsopa 阅读(42) 评论(0) 推荐(0) 编辑
摘要:在用树剖解决问题时发现,每次跳链的时候,就有跳到两点LCA的可能。 所以还是有之前树剖的思想,其实和倍增的LCA很像。 优点:常数小,实现很好理解也很好写。预处理复杂度O(n),查询O(log n),附带常数小。 感觉比倍增好写,而且还快。 实现如下:(预处理点这里) inline voi 阅读全文
posted @ 2022-02-24 11:36 cbdsopa 阅读(26) 评论(0) 推荐(0) 编辑
摘要:#include<bits/stdc++.h> using namespace std; #define N 2010 #define M 200010 #define INF 0x3f3f3f3f inline int read() { int s=0,f=1; char ch=getchar() 阅读全文
posted @ 2022-02-24 11:35 cbdsopa 阅读(136) 评论(0) 推荐(0) 编辑
摘要:不是费用流都需要用 SPFA 吗。 众所周知,SPFA 去世了,然后网络流显然有负边。于是我们可以像 Johnson 全源最短路一样,给边加上势能,具体实现看我之前的 博客 啦。 然后对于每一次跑 Dijkstra ,然后得到最短路,把势能要再加上这个最短路,可以证明这样操作一次图上不会再有负边。 阅读全文
posted @ 2022-02-24 11:34 cbdsopa 阅读(56) 评论(0) 推荐(0) 编辑
摘要:最大流 #include<bits/stdc++.h> using namespace std; #define N 210 #define M 5010 #define INF 0x3f3f3f3f int n,m,S,T; vector<int>head,to,nxt,val; void joi 阅读全文
posted @ 2022-02-24 11:33 cbdsopa 阅读(65) 评论(0) 推荐(0) 编辑
摘要:学这个是为了支持在带负权值的图上跑 Dijkstra. 为了这个我们要考虑把负的权值搞正。 那么先把我们先人已经得到的结论摆出来。我们考虑先用 SPFA 对着一个满足三角形不等式的图跑一次最短路,具体就是在原图的基础上建立超级源点。 然后我们把得到的这个东西称为 势能 h ,我们对于原图的每条边 阅读全文
posted @ 2022-02-24 11:32 cbdsopa 阅读(27) 评论(0) 推荐(0) 编辑
摘要:需要注意树上做最短路是O(n),因为只需要一次dfs SPFA #include<bits/stdc++.h> using namespace std; int n,m,ss; bool vis[500010]; int q[1000010],dis[500010]; vector<int>he 阅读全文
posted @ 2022-02-24 11:31 cbdsopa 阅读(22) 评论(0) 推荐(0) 编辑
摘要:用于解决前置性问题,如选A前需要先选择完B和C,或者求A前需要先求B。 具体来说,每次选择入度为0的点,并为与之有连边的点解锁度数。 vector<int>t; queue<int,vector<int> >q; bool topo() { t.clear(); for(int i=1;i<=n;+ 阅读全文
posted @ 2022-02-24 11:30 cbdsopa 阅读(21) 评论(0) 推荐(0) 编辑
摘要:做一次最短路,并且记录最短路径中通过的边数,若边数 n 则最短路中出现环,即出现负环。最长路正环同理。 #include<bits/stdc++.h> #define ll long long #define db double #define filein(a) freopen(# 阅读全文
posted @ 2022-02-24 11:29 cbdsopa 阅读(59) 评论(0) 推荐(0) 编辑
摘要:#include<bits/stdc++.h> #define ll long long #define db double #define filein(a) freopen(#a".in","r",stdin) #define fileot(a) freopen(#a".out","w",std 阅读全文
posted @ 2022-02-24 11:28 cbdsopa 阅读(17) 评论(0) 推荐(0) 编辑
摘要:闭合图 我们给出闭合图的定义:对于有向图中的点,其相邻的节点全部属于这个有向图,那么这个图就被称为闭合图。 也就是说这个图的终点一定是出度为0的。 最大权闭合子图 就是对于一个有向图,每个点有一个权值,权值属于实数,现在考虑选择一个闭合子图使得这个子图中的点的权值和最大。 我们尚且思考一下,不难发现 阅读全文
posted @ 2022-02-24 11:25 cbdsopa 阅读(48) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示