摘要:
基环树 这是一个有n个点,n条边的连通图,简单来说就是一棵树加了一条边。 两种常见思路: 去掉环上的一条边使之成为一棵树,再想办法把去掉这条边的影响给补上,简单来说就是划分样板空间。 把环缩成一个大点,把所有信息集中在环上,再在环上进行处理。常见的是环上dp。 前者是基环树最大独立集的基本思路,后者 阅读全文
摘要:
字符串算法入门——字符串hash,KMP,扩展 KMP 可能有人注意到我曾经讲过 KMP 算法,但那一篇讲的不好,所以我们重新写一下。 顺便在整改一下扩展 KMP 算法。 1 算法简介 字符 hash 其实就是把字符串压成数字。 KMP 算法是 D.E.Knuth、J,H,Morris 和 V.R. 阅读全文
摘要:
二分图多重匹配 用网络流求解即可,左边的点和右边的点之间容量仍然为1,但是源点与左边的点容量为左边的点能够选取次数,右边的点与汇点之间同理,跑最大流即可。 构造方案时,仍然看每条边的流量,判断是否匹配。 例题 代码: #include<iostream> #include<cstdio> #incl 阅读全文
摘要:
1二分图最小点覆盖 顾名思义,就是给定一个最小的点集$S$,使得图中任意一条边都有至少一个端点属于$S$,这个问题被称为二分图的最小点覆盖,简称最小覆盖。 1.1定理 二分图最小点覆盖包含的点数等于二分图最大匹配包含的边数。 1.2 构造方法 在二分图最大匹配的基础上,从左边的非匹配点出发,执行一次 阅读全文
摘要:
1二分图最大匹配必须边可行边 顾名思义,必须边,指无论哪一种二分图最大匹配方案,都有这一条边。可行边,指在某一种二分图最大匹配方案找中有这一条边。 2判定 对于完备匹配来说,任意的最大匹配方案,若是匹配边,则从右部点向左部点连有向边,若不是匹配变,则从左部点向右部点连边,在这张图上跑tarjan求强 阅读全文
摘要:
1二分图最大匹配 在一张二分图中选出最多的边,使得边两两不相交。 2求解 2.1匈牙利算法 即不断地尝试匹配,有人抢就放弃的算法。 #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cst 阅读全文
摘要:
1 2-SAT问题 有n给变量$x_i$,每一个变量有两个可能的取值$x_{i,0},x_{i,1}$,显然,总共的方案数为$2^n$, 有m个约束条件,每一个约束条件形如:如果$x_i$赋值为$x_{i,p}$,则$x_j$赋值为$x_{j,q}$。问在这m个约束条件下,是否存在一种合法的方案,如 阅读全文
摘要:
1欧拉回路与欧拉路 1.1定义 给定一张无向图,若存在一条从s到t的路径,恰好不重不漏的经过每条边一次,则称改路径为s到t的欧拉路。 特别的,若存在一条从s到s的欧拉路,则称该路径为欧拉回路,存在欧拉回路的图被称为欧拉图。 2.1定理 欧拉图:一张无向图为欧拉图,当且仅当无向图连通,并且每个点的度数 阅读全文
摘要:
树上差分 顾名思义,就是对树上路径或子树和整体加减时可以利用树上差分。 当然也可以线段树维护(树链剖分) 例如,要让x到y的这段路径上所以节点加1 就让我们差分数组$d_x$加上1,$d_y$加上1,$lca(x,y)$减去1,$fa_{lac(x,y)}$减去1 例题1 代码: #include< 阅读全文
摘要:
分层图最短路 类似于动态规划,但是应用范围比动态规划更广泛。 在原最短路的基础上,把所设计状态打包成一个节点,进行最短路。 层与层之间边权为0,各层之间边权为题目所给。 例题 代码: #include<iostream> #include<cstdio> #include<cmath> #inclu 阅读全文