~~~~~~~模板~~~~~~~
Dunyb
坚毅
展开
-
Tarjan(总结)
1)求强联通分量 Tarjan求强联通分量2)缩点 Tarjan缩点3)求割点和桥 割点和桥的模板4)求双连通分量 待补...原创 2020-05-01 09:27:58 · 607 阅读 · 0 评论 -
Tarjan (桥和割点模板)
补习Tarjan割点 定义:若从图中删除节点 x 以及所有与 x 关联的边之后,图将被分成两个或两个以上的不相连的子图,那么称 x 为图的割点。 如何求割点:在深搜树中,如果对于某个点u,与它相连的点v(v不是u的父亲)。 那么如果low[v]>=dfn[u], 那么也就是以v为根的深搜子树中的点所连接的点没有已...原创 2020-04-28 22:54:40 · 567 阅读 · 0 评论 -
Tarjan 缩点模板 (将有向有环图缩点成为有向无环图DAG)
缩点的作用 1)缩点的实际作用:把一个有向带环图,变成一个有向无环图(DAG) ,这样基于DAG的算法就能跑了。 2)可以算缩点后个点的出度基本思想 一我们既然能在有向图中找到环,那么我们就可以吧环给缩成点了(利用Tarjan缩点),缩点基于一种染色实现,在DFS搜索的过程中,尝试吧属于同一个强连通分量的点都染成一个颜色,同一颜色的点就相当...原创 2020-04-20 22:58:37 · 1305 阅读 · 0 评论 -
Tarjan(强连通模板)
强连通分量: 1)有向图中,该图中的任意两点之间可互达。 2)一个一个点也是强连通分量两个概念:1)时间戳 dfn[ x ] 时间戳是用来标记图中每个节点在进行深度优先搜索时被访问的时间顺序,当然,你可以理解成一个序号(这个序号由小到 大),用 dfn[x] 来表示(搜到该点的最早时间)2)low数组 2)low...原创 2020-04-20 21:14:15 · 549 阅读 · 0 评论 -
LCA (最近公共祖先) Tarjan & 倍增
LCA Tarjan:实现原理理解:离线算法,建好树后再查询,一次DFS 吧所有查询解决完。时间复杂度:O(n+q);n个点 q次询问代码/*LCA算法(最近公共祖先算法) Tarjan算法 */#include<iostream>#include<cstring>#include<math.h>#include<...原创 2020-05-01 09:40:57 · 964 阅读 · 0 评论 -
链式前向星
一种数据结构存图方式理论知识:点击此处通用代码:存图 :const int MAXN = ;int head[MAXN], cnt = 1;bool vis[MAXN];struct Edge{ //根据需要+变量 int to, dis, next;}edge[MAXN << ];void add_edge(int u, int v, int di...原创 2020-04-09 14:07:25 · 333 阅读 · 0 评论 -
费用流(板子)
最小费用最大流 最大费用最小流,建边的时候,把花费和流量调换位置 最大费用最大流,建边的时候,把正向的费用存为负值,结果取负号Spfa:链式向前星const int maxn = ;const int inf = 0x3f3f3f3f;//path用来保存找到一条费用最小的增广路 int path[maxn], dis[maxn], head[maxn], vis[maxn], ...原创 2019-10-01 07:56:56 · 411 阅读 · 0 评论 -
最大匹配(二分图)模板
最大匹配最大匹配 最小点覆盖 = 最大匹配 最大独立集 =N - 最大匹配(在二分图中(求一个最大的集合,使集合中的两两不存在)) 最少边覆盖= N(原图节点数) - 最大匹配数。邻接表: /*求 N ,M 的最大匹配 */#include<iostream>#include<cstring>#include<algorit...原创 2019-09-20 22:25:45 · 202 阅读 · 0 评论 -
带权二分图匹配(KM模板)
最大权二分匹配 最小权二分匹配 (建边时,把边改成负的)#include<iostream>#include<cstring>#include<stdio.h>#include<math.h>#include<algorithm>#include<queue>#include<vector>u...原创 2019-09-20 22:12:24 · 369 阅读 · 0 评论 -
线段树(维护区间最大最小值) 模板
const int MAX_LEN = ;int seg_tree[MAX_LEN << 2];int Lazy[MAX_LEN << 2];int arr[MAX_LEN];//从下往上更新 节点 void push_up (int root) { seg_tree[root] = max(seg_tree[root << 1], seg_tre...原创 2019-09-20 20:29:30 · 1158 阅读 · 0 评论 -
线段树 (维护区间和)模板
const int MAX_LEN = ;int seg_tree[MAX_LEN << 2];int Lazy[MAX_LEN << 2];int arr[MAX_LEN];//从下往上更新 节点 void push_up (int root) { seg_tree[root] = seg_tree[root << 1] + seg_tree[r...原创 2019-09-20 20:18:40 · 386 阅读 · 1 评论 -
网络流(HLPP--预流推进)模板
题目连接学习路径: 预流推进 O()https://www.luogu.org/blog/ONE-PIECE/jiu-ji-di-zui-tai-liu-suan-fa-isap-yu-hlpphttps://www.luogu.org/problemnew/solution/P4722AC:朴素版本预流推进(刚刚好卡过)#include<cstdio>#inc...原创 2019-09-10 23:05:03 · 501 阅读 · 0 评论 -
C++ 读入优化(关闭输入输出流),从文件读数据,把数据输出到文件中
std::ios::sync_with_stdio(false);cin.tie(0), cout.tie(0); freopen("in.txt", "r", stdin); //输入重定向,从文件 in.txt 中读入数据freopen("out.txt", "w", stdout); //输出重定向,输出数据将保存在out.txt文件中 inline int ...原创 2019-09-03 22:04:03 · 1529 阅读 · 0 评论 -
Trie 树模板(字典树,前缀树)
学习请点这里主要作用:词频统计:例如,给定一个由 10 万个单词组成的库,现要你判断一个单词是否有在库中出现,若出现,求出共出现多少次。 前缀匹配:给定字符串,找出以这个字符串开头的所有单词。插入代码const int maxn = 1e5;int Tire[maxn][27];int book[maxn];int tot = 1;void init(){ memset...原创 2019-08-19 14:34:51 · 243 阅读 · 0 评论 -
最小表示法(模板)
问题:某字符串循环同构的所有字符串中,字典序最小的串是哪个?1)什么是循环同构串?例如 "a b c d f e" 字符串长度为 6, 那么就是说有 6 种循环同构的方法"a b c d f e" , " b c d f e a " , "c d f e a b" , "d f e a b c" , " f e a b c d" , "e a b c d f"暴力解法:将...原创 2019-08-14 10:48:46 · 519 阅读 · 0 评论 -
Manacher(马拉车)求最长回文字符串(模板)
附上几位大佬的的学习路径:https://blog.csdn.net/xingyeyongheng/article/details/9310555https://subetter.com/algorithm/manacher-algorithm.htmlhttps://www.felix021.com/blog/read.php?2040模板:const int maxn =...原创 2019-08-13 14:24:41 · 275 阅读 · 0 评论 -
ISAP模板(网络流模板)
附上学习地址:https://www.luogu.org/blog/ONE-PIECE/jiu-ji-di-zui-tai-liu-suan-fa-isap-yu-hlppISAP过不掉的题:https://loj.ac/problem/127const int maxn = 1e4 + 3000;const int maxm = 4e5 + 10;const int in...原创 2019-08-07 16:31:31 · 301 阅读 · 0 评论 -
(FF && EK && Dinic) 网络流模板
附上学习路径https://www.luogu.org/blog/ONE-PIECE/wang-lao-liu-jiang-xie-zhi-dinichttps://www.cnblogs.com/y-clever/p/6308820.html洛谷真是个神奇的地方:(太强了)https://www.luogu.org/problemnew/solution/P4722yh大佬的...原创 2019-08-06 14:41:59 · 245 阅读 · 0 评论 -
欧拉函数模板
求x以内的与x 互质的正整数的个数求 最大公约数int gcd(int a, int b){ return !b ? a : gcd(b, a%b);}点此入门:欧拉入门.//欧拉算法int euler(int n){ int rea = n; for(int i = 2; i * i <= n; i++){ if(n % i == 0){ r...原创 2019-07-15 15:03:00 · 175 阅读 · 0 评论 -
素数表板子
#include<iostream>#include<cstring>using namespace std;const int maxn = 10000;bool isPrime[maxn];int prime[maxn];int tot = 0;void IsPrime(int n){ memset(isPrime, 0, sizeof(isPrime...原创 2019-07-15 12:39:10 · 194 阅读 · 0 评论 -
SPAF
虽然Bellman-Ford 算法的思路很简洁,但是O(VE)的复杂度很高,然后怎么办呢?优化嘛,Bellman-Ford 算法的每轮操作都需要操作所有边,显然这个其中会有大量无意义的操作,严重影响算法性能,只有当某个顶点u的 d[u]改变时,从它出发的边的邻接点v 的d[v]才有可能改变是不是想到了什么???对了就是队列。我们建立一个队列,每次将队首的顶点元素u取出,然后对u出发的所...原创 2019-03-03 18:07:51 · 863 阅读 · 3 评论 -
Dijkstra(最短路)(模板)
Dijkstra时间复杂度对比Dijkstra: O(N^2);Dijkstra + 优先队列优化 : O (2 * E + V * logV)SPFA: O(k * E),k 为每个节点进入队列的次数,一般小于2,最坏 O(V * E);BellmanFord:O(V * E), 可检测负权。Floyd:O(n^3),j计算每个节点到节点的最短路。结论1)单源最短...原创 2019-03-01 21:45:44 · 730 阅读 · 4 评论 -
并查集 (模板)
附上知识博客:并查集4步走,初始化,查找,合并,路径压缩1)初始化for(int i = 0; i < = N; i++){ father[i] = i; //也可以为-1}2)查找//递推式 int findFather(int x){ while(x != father[x]){ x = father[x]; } return x;}/...原创 2019-03-01 12:38:27 · 231 阅读 · 0 评论