
算法模板
给个选择
世界上只有10种人,一种懂二进制,一种不懂。
展开
-
倍增法LCA【模板】
#include<bits/stdc++.h>using namespace std;const int N=5e5+10;struct zzz{int t,nex;}e[N<<1];int head[N],tot;int depth[N],fa[N][22],lg[N];inline void read(int &x){ int w=1;x=0;...原创 2020-04-29 16:08:47 · 430 阅读 · 0 评论 -
染色法判断二分图模板
#include<bits/stdc++.h>using namespace std;const int N=100010,M=200010;int h[N],e[M],w[M],ne[M],idx,n,m,color[N];inline void add(int a,int b,int c){ e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx...原创 2020-04-12 17:46:52 · 222 阅读 · 0 评论 -
使用数组来模拟各种数据结构【c/c++ 模板】
#include<bits/stdc++.h>const int N=100010;//数组模拟单链表 int ne[N],n[N],head=-1,idx=0,a;void add_head(int x) {n[idx]=x,ne[idx]=head,head=idx++;}void add(int k,int x) {n[idx]=x,ne[idx]=ne[k],ne[k...原创 2020-04-03 16:39:32 · 280 阅读 · 0 评论 -
作为OIer的起手代码
别人分享的,自己保存下,如有侵权,联系立删(几行代码。。应该不至于。。啊哈哈哈哈)//#pragma comment(linker, "/stack:200000000")//#pragma GCC optimize("Ofast")//#pragma GCC optimize(3)//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt...原创 2020-03-06 16:49:46 · 895 阅读 · 0 评论 -
最小生成树
Prim算法:#include<bits/stdc++.h>using namespace std;const int N=1010,inf=0x3f3f3f3f;int n,m,dist[N],mp[N][N];bool st[N];int prim(){ int res=0; memset(dist,0x3f,sizeof dist); for(int i=0...原创 2020-03-02 10:44:45 · 252 阅读 · 0 评论 -
数组模拟二叉搜索树
void build(int idx,int x){ if(a[idx]==0) a[idx]=x; else if(x>a[idx]) build(idx<<1|1,x); else if(x<a[idx]) build(idx<<1,x);}原创 2020-02-29 21:10:54 · 520 阅读 · 0 评论 -
数组模拟双链表【头插,尾插,中插,删除】
#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int e[N], l[N], r[N], idx;void init(){ r[0] = 1, l[1] = 0; idx = 2;}void add(int k, i...原创 2020-02-23 09:55:03 · 293 阅读 · 0 评论 -
数组模拟单链表【头插,中插,删除】
代码如下:#include<bits/stdc++.h>using namespace std;const int maxn=100010;int head,e[maxn],ne[maxn],idx,m;void add(int x){ e[idx]=x; ne[idx]=head; head=idx++;}void insert(int k,int x){...原创 2020-02-23 09:51:15 · 411 阅读 · 0 评论 -
求最短路dijkstra算法模板(c++)
#include<bits/stdc++.h>using namespace std;const int N=510;int dist[N],g[N][N],n,m;bool st[N];int dijkstra(){ memset(dist,0x3f,sizeof dist); dist[1]=0; for(int i=0;i<n-1;i++) { in...原创 2020-01-30 09:08:22 · 637 阅读 · 0 评论 -
【数据结构】堆的常规操作(建堆,删除,插入)
写在前面:该篇文章转自柳婼【数据结构】堆、堆排序笔记堆的一些性质:堆是一棵完全二叉树,树的每个结点的值都不小于(或者不大于)其左右孩子的值。父亲结点大于等于孩子结点的值叫做大顶堆,反之叫做小顶堆大顶堆的每个结点的值都是以它为根结点的子树的最大值,反之最小值下面都以大顶堆为例子:两个兄弟之间不存在大小比较关系,堆只能说明某结点引导的子树的所有子结点都比它小,就像领导关系一样,下属之间或者...原创 2020-01-23 09:45:44 · 405 阅读 · 0 评论 -
前序,中序,后序三种遍历的相互转化(思路+递归实现代码)【全】
在二叉树这种数据结构中,有三种遍历方式,分别是前序(也叫先序)遍历,中序遍历,和后序遍历。当然有的地方还会有按层遍历。前序遍历:根->左->右中序遍历:左->根->右后序遍历:左->右->根按层遍历:从第一层开始一直到最后一层,类似按着完全二叉树的编号一个一个输出先说上面前三种遍历的相互转换,当已知前序遍历序列和中序遍历序列的时候,可以确定它的后序遍...原创 2020-01-21 19:32:34 · 8297 阅读 · 1 评论 -
归并排序及求逆序对(算法模板)
归并排序:#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int a[N],tmp[N];void merge_sort(int q[],int l,int r){ if(l>=r) return ; int mid =l+r>>1; merge_sort(q,l,mid);...原创 2020-01-11 10:49:53 · 293 阅读 · 0 评论 -
快速排序(c语言)
#include<bits/stdc++.h>using namespace std;int n;const int N=1e6+10;int a[N];void quick_sort(int q[],int l,int r){ if(l>=r) return ; int i=l-1,j=r+1,x=q[l+r>>1]; while(i<j)...原创 2020-01-09 15:12:44 · 378 阅读 · 0 评论 -
Trie树(简单应用-数据结构)
Trie树是用来存储和查询字符串的一种数据结构。下面代码部分是最基本的应用涉及到了存储和查询两个操作。测试样例:6 I abc Q abc I ab Q a I a Q abc输出样例: 1 0 1代码如下:#include<bits/stdc++.h>using namespace std;const int N=100010;int ne[...原创 2019-11-06 15:21:18 · 111 阅读 · 0 评论 -
KMP子串匹配
以下模板来源于AcWing。求Next数组://s[]是模式串,p[]是模板串,n是s的长度,m是p的长度for(int i=2,j=0;i<=m;i++){ while(j&&p[i]!=p[j+1]) j=ne[j]; if(p[i]==p[j+1]) j++; ne[i]=j;}//匹配for(int i=1,j=0;i<=n;i++){ ...原创 2019-11-05 15:45:13 · 128 阅读 · 0 评论 -
大数高精度加减乘除模板(极简)
首先声明,以下代码参考于AcWing.高精度加法://c=A+B,A>=0,B>=0;vector<int> add(vector<int> &A,vector<int> &B){ if(A.size()<B.size()) return add(B,A); vector<int>C; int t=0;...原创 2019-11-05 15:34:02 · 535 阅读 · 2 评论