![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
一些算法模板
语海与冰
好久不见
展开
-
最小生成树算法模板
Akatsuki原创 2017-07-25 15:46:47 · 492 阅读 · 1 评论 -
最长上升子序列模板
二分法优化后的模板:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>const int MAX=50000;using namespace std;int arr[MAX+50],ans[MAX+50],len;int binary_se...原创 2017-08-08 08:05:57 · 484 阅读 · 0 评论 -
线性同余方程组
poj2891 模板#include#include#include#include#include#include#include#include#include#include#define max(a,b) (a>b?a:b)#define min(a,b) (a#define swap(a,b) (a=a+b,b=a-b,a=a-b)#define原创 2018-02-05 22:04:06 · 243 阅读 · 0 评论 -
最长回文子序列以及最长回文子串
最长回文子序列(动态规划)int p[1500][1500];int LongCommonStr(string s){ string sr(s); reverse(sr.begin(),sr.end()); int n=s.size(); int p[n+1][n+1]; memset(p); for(int i=1;i&lt;=n;...原创 2018-03-25 10:55:47 · 346 阅读 · 0 评论 -
划分树模板
poj2104题目链接终于看懂划分树– 明天写划分树详解~#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<cmath>#include<iomanip>原创 2018-04-20 21:13:32 · 321 阅读 · 0 评论 -
拓扑排序(邻接表+队列优化)
邻接矩阵的算法之前做过一道dp+拓扑的题,用到了邻接表+队列的拓扑,后来忘写博客了(大概好久以前了),今天补上因为拓扑排序的答案是不唯一的,所以我们可以把所有入度为0的点都先放到队列里面,然后对于队列中的每一个点找它存储在邻接表里相邻的其它点,使其入度减一,经过这样的操作可以达到O(n+e)的复杂度。当题目中要求特定输出顺序的时候,比如优先输出节点小的,我们就可以把队列改为优先队列来达到要求。代码...原创 2018-05-24 21:09:09 · 1667 阅读 · 0 评论 -
POJ1330-LCA最近公共祖先(Tarjan算法模板代码)
poj1330 关于LCA的Tarjan算法详解可看这里 以下是根据算法自行写的模板代码: vector模拟邻接表:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<vector>#include&l...原创 2018-07-30 09:07:46 · 619 阅读 · 4 评论 -
SPOJ - DQUERY (莫队模板代码)
题目链接 #include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#define memset(a,v) memset(a,v,sizeof(a))#defi...原创 2018-08-24 15:30:15 · 252 阅读 · 0 评论 -
有向图强连通分量之Tarjan算法
出处https://www.byvoid.com/zhs/blog/scc-tarjan[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子...转载 2018-08-23 20:05:48 · 352 阅读 · 0 评论 -
网络最大流-模板(EK,dinic(+当前弧优化))
EK(Edmond—Karp)算法#include#include#include#include#include#include#include#include#include#include#include#define max(a,b) (a&amp;amp;amp;gt;b?a:b)#define min(a,b) (a#define swap(a,b) (a=a+b,b=原创 2018-01-17 10:11:17 · 452 阅读 · 0 评论 -
最小费用最大流
poj2135模板题意:有n个点,m条边,FJ要从1走到n,再从n走回1,走的边不能重复,找这样一个来回的最短路径。转为最小费用最大流来做,也就是说每条边只能用一次,我们把给出的每条边的长度作为这条边的花费,然后设边的容量为1因为是无向图,所以对于每条边(x,y)要建立四条边,x->y容量为1费用为L(长度)的边,y->x容量为0费用为(-L)的边,y->x容...原创 2018-10-04 17:50:33 · 394 阅读 · 0 评论 -
整数划分问题
#include<cstdio>#include<cstring>const int MAXN=55;int n,m;int dp[5][MAXN][MAXN];void init() { memset(dp,0,sizeof(dp)); //将n划分成最大数不超过k的划分数。 for (int i=0;i<MAXN;i++) ...原创 2019-03-20 21:29:40 · 207 阅读 · 0 评论 -
最长公共子序列(含打印)
#include<iostream>#include<cstdio>#include<string>#include<cstring>using namespace std;int dp[1000][1000];int main(){ string s1,s2; while(cin>>s1) { ...原创 2017-11-06 19:00:27 · 678 阅读 · 0 评论 -
二分图的最大匹配
核心算法:bool G[MAXL+50][MAXL+50];bool vis[MAXL+50];int match[MAXL+50];int n,m;bool dfs(int u){ for(int i=1;i<=m;i++) { if(G[u][i]==true&&!vis[i]) { vis[i]=tru原创 2018-01-11 09:06:08 · 320 阅读 · 0 评论 -
极角排序以及凸包模板
Akatsuki原创 2017-07-28 09:44:30 · 874 阅读 · 0 评论 -
背包模板
Akatsuki原创 2017-08-08 08:32:33 · 443 阅读 · 0 评论 -
线段树模板
Akatsuki原创 2017-09-14 18:47:19 · 244 阅读 · 0 评论 -
并查集模板
Akatsuki原创 2017-11-06 13:46:13 · 216 阅读 · 0 评论 -
求组合数
Akatsuki原创 2017-11-05 22:32:25 · 757 阅读 · 0 评论 -
最短路径算法模板:Dijkstra/Floyd/Bellman-Ford模板
此处不解释算法,只写代码模板。Dijkstra邻接矩阵实现#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;using namespace std;const int MAX=0x3f3f3f3f;int map[110][110];int dis[110];int原创 2017-07-25 16:25:03 · 934 阅读 · 0 评论 -
素数--筛选法打表,快速幂,欧拉函数,gcd
素数筛选法打表#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int M=1e6;int check[M+50];int prime[M+50];int len=0;void init(){ int i,j; for...原创 2017-10-01 12:22:41 · 905 阅读 · 0 评论 -
大数相加/减/乘/除/取余 模板
Akatsuki原创 2017-12-02 14:33:01 · 442 阅读 · 0 评论 -
树状数组解决区间求和问题(模板)
Akatsuki原创 2017-11-20 20:10:03 · 476 阅读 · 0 评论 -
字符串匹配-KMP算法
#include#include#include#includeusing namespace std;const int MAXL=1e6+10;char s[MAXL+50],t[MAXL+50];//s为目标串,t为模式串int Next[MAXL+50];void Getnext(){ int i=0,j=-1; Next[0]=-1; int l原创 2017-10-16 15:33:20 · 322 阅读 · 0 评论 -
二分法模板binary_search
#include#includeusing namespace std;int main(){ int a[100]= {4,10,11,30,69,70,96,100}; int b=binary_search(a,a+9,4);//查找成功,返回1 cout"在数组中查找元素4,结果为:"<<b<<endl; int c=binary_search(a,原创 2017-08-06 16:59:14 · 486 阅读 · 0 评论 -
树状数组求逆序对
Akatsuki原创 2017-11-13 18:35:20 · 398 阅读 · 0 评论