模板
cstirling
这个作者很懒,什么都没留下…
展开
-
树链剖分&树状数组区间加减区间求和模板
#pragma comment(linker,"/STACK:100000000,100000000")#include#include#include#includeusing namespace std;const int N=50010;#define ll long longint n,m,p,a[N];int ti[N],idx,par[N],son[N],sz[N],原创 2017-04-26 22:55:48 · 400 阅读 · 0 评论 -
最大流Dinic模板
const int N=210;const int M=40010*2;const int inf=0x3f3f3f3f;struct Edge{ int v,cap,nxt;}e[M];int src,des,dis[N],head[N],ecnt;int n,m;void Addedge(int u,int v,int w){ e[ecnt].v=v;原创 2017-04-27 12:40:06 · 449 阅读 · 0 评论 -
数位DP模板
int dig[20];ll dp[20][10];ll Dfs(int pos,int pre,int lim,int first){ if(pos==-1) return 1; if(!lim&&!first&&dp[pos][pre]!=-1) return dp[pos][pre]; int upper=lim?dig[pos]:9; ll res=0原创 2017-01-02 18:40:40 · 295 阅读 · 0 评论 -
输入挂
整数templateinline bool rd(T &num){ char in=getchar();bool ok=false; if(in==EOF) return false; while(in!='-'&&(in'9')) in=getchar(); if(in=='-'){ ok=true;num=0;} else num=in-'0';转载 2016-08-18 10:04:25 · 285 阅读 · 0 评论 -
Splay模板
POJ 3580 点击打开链接#include #include const int inf=0x3f3f3f3f;const int N=200100;using namespace std;//除了Get_pre和Get_nxt函数,其他节点都是按照下标从小到大排列的struct node{ node *ch[2],*fa; int sz,val,mn,add原创 2016-12-15 17:13:50 · 623 阅读 · 0 评论 -
中国剩余定理模板
ll m[N],p[N];//p是质数,m是余数ll Exgcd(ll a,ll b,ll &x,ll &y){ if(b==0) { x=1; y=0; return a; } ll x1,y1; ll d=Exgcd(b,a%b,x1,y1); x=y1; y=x1-a/b*y1;原创 2017-07-25 08:43:26 · 332 阅读 · 0 评论 -
bitset模板
const int M=3200;//M=N/32struct Bitset{ unsigned v[M]; void Reset() {for(int i=0;i<M;i++) v[i]=0;}//整体置0 void Set() {for(int i=0;i<M;i++) v[i]=-1;}//整体置1 unsigned Test(int x) {return原创 2017-08-17 09:02:46 · 255 阅读 · 0 评论 -
tarjan&&LCA模板
//求强连通分量int n,m;int dfn[N],low[N],instk[N],sccno[N],index,scc_cnt;stack stk;vector e[N],scc[N];void Init(){ for(int i=0;i<N;i++) dfn[i]=low[i]=sccno[i]=instk[i]=0; memset(e,0,siz原创 2017-01-02 18:51:55 · 403 阅读 · 0 评论 -
最短路模板
dijkstra+heap优化int n,m,vis[N];vector >g[N];ll dis[N];void Dijkstra(int s){ priority_queue >q; memset(dis,127,sizeof(dis)); memset(vis,0,sizeof(vis)); q.push(MP(0,s)); dis[s]=原创 2017-01-09 19:16:42 · 337 阅读 · 0 评论 -
各种幂模板
快速幂ll powermod(ll a,ll n){ ll ans=1; a%=MOD; while(n) { if(n&1) ans=ans*a%MOD; a=a*a%MOD; n>>=1; } return ans;}快速矩阵幂const ll MOD=1e9+7;cons原创 2016-08-16 17:49:54 · 294 阅读 · 0 评论 -
线段树扫描线模板
#include //hdu1542 求平面矩形面积交#include #include #define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int N=1222;using namespace std;int n,cnt;struct node{ double l,r,h; int f; node(原创 2016-11-28 16:43:53 · 355 阅读 · 0 评论 -
最小费用流模板
const int N=510;const int M=1010;const ll INF=0x3f3f3f3f3f3f3f3f;struct Edge{ int u,v,nxt; ll cap,flow,cost;}g[M*6];int n,m,cnt;int maxflow,p[N],head[N];ll d[N],mincost;void Addedge(i原创 2016-09-26 16:48:57 · 264 阅读 · 0 评论 -
高斯消元模板
//f(n)=f(n-1)*a+f(n-2)*b+f(n-3)*c+f(n-4)*d情况下的高斯消元const int Matsize=5;double mat[Matsize][Matsize]={ 95,36,11,5,281, 281,95,36,11,781, 781,281,95,36,2245, 2245,781,281,95,6336};vo原创 2017-09-02 13:39:06 · 286 阅读 · 0 评论 -
SA后缀数组模板
下标都是从1开始的计数排序const int N=100010;#define MS(x,y) memset(x,y,sizeof(x))int sa[N],rnk[N],height[N],tax[N],tp[N],n,m,k;char str[N];void rsort(){ for(int i=0;i<=m;i++) tax[i]=0; for(int i=原创 2016-12-16 20:12:00 · 393 阅读 · 0 评论 -
KMP算法&拓展KMP算法模板
KMPchar a[N],b[N];int nxt[N]; int n,m; void Cal_nxt() { int i; nxt[0]=-1; for(i=1;i<m;i++) { int j=nxt[i-1]; while(j>=0&&b[i]!=b[j+1]) j=nxt[j];原创 2016-08-26 16:34:45 · 568 阅读 · 0 评论 -
AC自动机的两个模板
指针型//求目标串中出现了几个模式串#includeusing namespace std;const int N=1000010;struct trie{ trie *nxt[26]; trie *fail; int cnt; trie() { for(int i=0;i<26;i++) nxt[i]=NULL;原创 2016-09-21 20:01:49 · 284 阅读 · 0 评论 -
博弈论
SG函数模板const int N=1010;int f[N],sg[N],s[N],cnt;void MakeSG(){ memset(sg,0,sizeof(sg)); for(int i=1;i<N;i++) { memset(s,0,sizeof(s)); for(int j=0;j<cnt&&f[j]<=i;j++) s[原创 2017-04-14 14:17:50 · 488 阅读 · 0 评论 -
组合数模板
n,m大,MOD小#include using namespace std;#define ll long longconst int N=1000100;const int MOD=99991;ll f[N];ll Fp(ll a,ll n){ ll ans=1; while(n) { if(n&1) ans=(ans*a)%MOD;原创 2017-03-22 14:03:26 · 320 阅读 · 0 评论 -
最小割Stoer-Wagner算法模板hdu3691
全局最小割SW算法原创 2016-07-24 10:05:13 · 300 阅读 · 0 评论 -
快速求原根
51Nod 1135-原根 `#include include include include include include include include include include include define PR pairdefine MP make_pairdefine fi firstdefine se seconddefine lson l,m,rt<<1define rs原创 2016-08-06 17:40:28 · 1347 阅读 · 0 评论 -
莫队算法模板
题目链接:http://codeforces.com/contest/617/problem/E#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #define PR pai原创 2016-09-25 19:40:37 · 238 阅读 · 0 评论 -
KM算法模板(HDU 2255)
#include #include #include #include #include #include #include #include #include #include #include #define PR pair#define MP make_pair#define fi first#define se second#define lson l,m,r原创 2016-09-26 16:30:48 · 272 阅读 · 0 评论 -
大整数类BIGN的设计与实现 C++高精度模板
转载自郭大侠的博客点击打开链接首先感谢刘汝佳所著的《算法竞赛入门经典》。众所周知,C++中储存能力最大的unsigned long long 也是有着一个上限,如果我们想计算非常大的整数时,就不知所措了,所以,我写了一个高精度类,允许大整数的四则运算这个类利用字符串进行输入输出,并利用数组进行储存与处理,通过模拟四则运算,可以计算很大的整转载 2016-11-07 17:00:55 · 584 阅读 · 0 评论 -
头文件和宏模板
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include转载 2016-11-28 17:22:16 · 313 阅读 · 0 评论 -
Sam后缀自动机模板
const int maxn = 112345 ,mlen = 26;struct Sam{ int len[maxn*2],fa[maxn*2],nex[maxn*2][mlen]; int _cnt,root,omg; int newNode(int L = 0){ len[_cnt] = L; memset(nex[_cnt],fa原创 2016-12-15 17:15:02 · 361 阅读 · 0 评论 -
最小生成树模板
Kruskalstruct edge{ int u,v,w; edge(int _u=0,int _v=0,int _w=0):u(_u),v(_v),w(_w){} bool operator < (edge t) const {return w<t.w;}}e[M];int n,m;//n是点数,m是边数,点编号从1开始,边编号从0开始int par[N];原创 2017-01-02 17:57:45 · 461 阅读 · 0 评论 -
二分图匹配模板
二分图最大匹配①Hopcroft-Carp算法时间复杂度O(sqrt(n)*m)struct edge{ int v,nxt;}e[M];int n,m;int head[N],e_cnt;int mx[N],my[N],dx[N],dy[N],vis[N],dis;queue q;void Init(){ e_cnt=0; memset(v原创 2017-01-09 22:42:18 · 465 阅读 · 0 评论 -
字典树模板
struct trie{ int cnt; trie *nxt[26]; trie() { cnt=1; for(int i=0;i<26;i++)nxt[i]=NULL; }};trie *root,*p,*q;void Insert(char *str){ p=root; for(int i=0;原创 2017-03-17 16:07:10 · 244 阅读 · 0 评论 -
自适应辛普森模板
//求椭圆与两竖线相交形成的面积#include#include#includeusing namespace std;double aa,bb,l,r;double F(double x){ return sqrt(bb*bb-x*x*bb*bb/(aa*aa));//F(x)的公式}double Simpson(double a,double b){ dou原创 2017-03-23 17:54:27 · 952 阅读 · 0 评论 -
快速傅里叶变换(FFT)和数论变换(NTT)模板
#include#define ll long long#define dob complexconst int N=120010;const double pi=acos(-1.0);using namespace std;inline int rd(){ int x=0,res=1;char ch=getchar(); while(ch>'9'||ch<'0'){原创 2016-09-04 15:39:21 · 1641 阅读 · 0 评论