随笔分类 -  模板

摘要:背景: Johnson 和 Floyd 一样,是一种能求出无负环图上任意两点间最短路径的算法。该算法在 1977 年由 Donald B. Johnson 提出。 任意两点间的最短路可以通过枚举起点,跑 n次 Bellman-Ford 算法解决,时间复杂度是 O(\(n^2m\))的,也可以直接用 阅读全文
posted @ 2020-11-21 23:50 wsl_lld 阅读(183) 评论(0) 推荐(0)
摘要:点击展开代码块 #include <bits/stdc++.h> #define mkp make_pair #define pb push_back #define all(x) x.bg,x.ed #define newline puts("") #define rep(i,n) for(int 阅读全文
posted @ 2020-09-11 13:12 wsl_lld 阅读(774) 评论(0) 推荐(0)
摘要:1.P3919 【模板】可持久化线段树 1(可持久化数组) 点击查看代码块 #include <bits/stdc++.h> #define mkp make_pair #define pb push_back #define v(T) vector<T> #define all(x) x.bg,x 阅读全文
posted @ 2020-09-04 13:36 wsl_lld 阅读(199) 评论(0) 推荐(0)
摘要:这里提供数字版KMP和字符串版KMP 点击查看代码块 #include <bits/stdc++.h> #define ed end() #define bg begin() #define mkp make_pair #define pb push_back #define vv(T) v(v(T 阅读全文
posted @ 2020-08-19 00:08 wsl_lld 阅读(92) 评论(0) 推荐(0)
摘要:点击查看代码块 #include <bits/stdc++.h> #define ed end() #define bg begin() #define mkp make_pair #define pb push_back #define vv(T) v(v(T)) #define v(T) vec 阅读全文
posted @ 2020-08-18 23:50 wsl_lld 阅读(165) 评论(0) 推荐(0)
摘要:tarjan 缩点 点击查看代码块 /* tarjan算法解析: https://blog.csdn.net/acmmmm/article/details/16361033 */ #include <bits/stdc++.h> using namespace std; const int maxn 阅读全文
posted @ 2020-08-17 19:41 wsl_lld 阅读(202) 评论(0) 推荐(0)
摘要:注意:此次短路可以走重边 点击查看代码 /* 次短路: 边可以重复走 1.以1为起点跑最短路,以n为起点跑最短路。 2.枚举每一条边,次短路只可能是两种情况: (1)最短路上的最短的一条边跑三次 (2)除了最短路外的其他能到n的次短路 */ #include <bits/stdc++.h> usin 阅读全文
posted @ 2020-08-16 22:22 wsl_lld 阅读(154) 评论(0) 推荐(0)
摘要:洛谷P6577 【模板】二分图最大权完美匹配 点击查看代码块 /* Kuhn-Munkres 复杂度O(n^3),加入松弛操作 */ #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<in 阅读全文
posted @ 2020-08-12 09:06 wsl_lld 阅读(179) 评论(0) 推荐(0)
摘要:点击查看代码块 /* 找字典序最小的欧拉路,也可以做欧拉回路 */ #include <bits/stdc++.h> #define ed end() #define bg begin() #define mp make_pair #define pb push_back #define v(T) 阅读全文
posted @ 2020-08-07 11:07 wsl_lld 阅读(140) 评论(0) 推荐(0)
摘要:点击查看代码块 /* trie树(前缀树) trie[maxnNode][charSet] trie[i][j] == 0 表示trie树中的第i号节点,没有连边 trie[i][j] == x 表示trie树中的第i号节点,与树中的第x号节点有一条连边,边权为字符集中的第j个字符 */ #incl 阅读全文
posted @ 2020-07-31 21:23 wsl_lld 阅读(92) 评论(0) 推荐(0)
摘要:点击查看折叠代码块 //Zeller公式 /* 输入一个日期,计算这天是星期几 */ #include <bits/stdc++.h> using namespace std; int getId(int y, int m, int d) { if (m < 3) {y --; m += 12;} 阅读全文
posted @ 2020-07-28 20:39 wsl_lld 阅读(149) 评论(0) 推荐(0)
摘要:点击查看折叠代码块 /* C(n,m) % p = n!/(m! * (n-m)!) % p = n! % p * inv[m!] % p * inv[(n-m)!] % p 求出1-n的前缀积pre[1]--pre[n] 和 1-n的逆元的前缀积 pre_inv[1]--pre_inv[n] 则 阅读全文
posted @ 2020-07-28 20:38 wsl_lld 阅读(150) 评论(0) 推荐(0)
摘要:点击查看折叠代码块 #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<string> using namespace std; const int maxn=1e5+10; int a[maxn 阅读全文
posted @ 2020-07-28 20:37 wsl_lld 阅读(84) 评论(0) 推荐(0)
摘要:点击查看折叠代码块 int read(){ int x=0,f=1;char ch=getchar(); while (ch<'0' || ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch>='0' && ch<='9'){x=x*10+ch-48 阅读全文
posted @ 2020-07-28 20:36 wsl_lld 阅读(166) 评论(0) 推荐(0)
摘要:P3381 【模板】最小费用最大流 添加了弧优化 点击查看折叠代码块 /* 最大流最小费用 费用为单位流量的费用 在最大流的前提下找最短路径即为最小费用 边权为当前边的流量乘以单位流量的费用 首先构建一个图用最短路算法来找到源点到各个点的最短距离 找到这个数据之后,我们就可以沿着最短路来进行增广, 阅读全文
posted @ 2020-07-28 20:35 wsl_lld 阅读(200) 评论(0) 推荐(0)
摘要:增添了弧优化,bfs提前判断 点击查看折叠代码块 /* 时间复杂度: O(N*N*M) */ #include <bits/stdc++.h> #define DEBUG #define d1(x) std::cout << #x " = " << (x) << std::endl #define 阅读全文
posted @ 2020-07-28 20:34 wsl_lld 阅读(105) 评论(0) 推荐(0)
摘要:模板:直接求一般图最大匹配: 同时求出match[i]表示与第i个节点匹配的点是哪一个 点击查看折叠代码块 #include <bits/stdc++.h> using namespace std; const int maxn=1010; const int inf=0x3f3f3f3f; typ 阅读全文
posted @ 2020-07-28 20:31 wsl_lld 阅读(183) 评论(0) 推荐(0)
摘要:点击查看折叠代码块 /* 树的重心也叫树的质心。对于一棵树n个节点的无根树,找到一个点, 使得把树变成以该点为根的有根树时,最大子树的结点数最小。 换句话说,删除这个点后最大连通块(一定是树)的结点数最小。 性质: 1.树中所有点到某个点的距离和中,到重心的距离和是最小的(实际应用中经常用到此性质) 阅读全文
posted @ 2020-07-28 20:29 wsl_lld 阅读(183) 评论(0) 推荐(0)
摘要:点击查看折叠代码块 /* 两次dfs 第一次定一个根找离他最远的点 然后以该点为根再找离他最远的点 参考:https://www.cnblogs.com/handsome-zyc/p/11237529.html */ #include <bits/stdc++.h> using namespace 阅读全文
posted @ 2020-07-28 20:27 wsl_lld 阅读(126) 评论(0) 推荐(0)
摘要:模板: 二维单调队列维护二维区间最大值、最小值 点击查看折叠代码块 /* 二维单调队列可以维护区间的最大值,最小值 */ #include <bits/stdc++.h> using namespace std; typedef long long int LL; const int MAXN = 阅读全文
posted @ 2020-07-28 20:18 wsl_lld 阅读(113) 评论(0) 推荐(0)