
模板
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
自然数幂和模板
自然数幂和模板(第一类斯特林数)ll get(ll n,ll k){ fo(i,0,k) su[i][0]=0,ss[i][i]=1; fo(i,1,k) fo(j,1,i-1) ss[i][j]=(ss[i-1][j-1]-(i-1)*ss[i-1][j]%mo)%mo; f[0]=(n+1)%mo;f[1]=n*(n+1)%mo;原创 2016-03-18 20:11:05 · 1115 阅读 · 0 评论 -
SAM建立模板
int extend(int x,int p) { int np=++tot;sam[np].len=sam[p].len+1; while (p&&!sam[p].son[x]) sam[p].son[x]=np,p=sam[p].pr; if (!p) sam[np].pr=1;else { int q=sam[p].son[x]; if原创 2016-08-17 22:40:56 · 1572 阅读 · 0 评论 -
LCT操作模板
accessvoid access(int x) { int y=0; while (x) { splay(x,0); f[t[x][1]]=0;p[t[x][1]]=x; t[x][1]=y;f[y]=x;p[y]=0; updata(x); y=x;x=p[x]; }}makerootvoi原创 2016-09-03 16:11:51 · 1197 阅读 · 0 评论 -
FFT模板
带预处理的,听说精度会炸=w=void DFT(complex *a,int flag) { for(int i=0;i<len;i++) { int p=0; for(int j=i,k=0;k<lg;j/=2,k++) p=(p<<1)+(j&1); t[p]=a[i]; } for(int m=2;m<=len;m=原创 2017-03-10 19:20:58 · 776 阅读 · 0 评论 -
单纯形模板
学习UOJ上dalao们的初始化黑科技原创 2017-05-12 12:48:13 · 852 阅读 · 0 评论 -
大数分解Pollard_rho模板
发现我之前写的Pollard_rho模板是假的。。。 学(抄)了一发真的,但跑的贼慢ll mult(ll x,ll y,ll Mo) { x%=Mo;y%=Mo; ll tmp=(ll)((long double)x*y/Mo+1e-8)*Mo; return (x*y-tmp+Mo)%Mo;}ll pwr(ll x,ll y,ll Mo) { ll z=1;x%原创 2017-11-06 22:11:28 · 661 阅读 · 0 评论 -
回文树模板
还是用0号点比较好,用数据结构维护的时候多注意一下。原创 2017-12-09 20:49:37 · 323 阅读 · 0 评论 -
虚树模板
Codevec记录所有在虚树中的点,方便删除 add1只需要多开一个lst就可以实现O(k)删除 为了方便默认1号点为根void build() { sort(a+1,a+tot+1,cmp); st[top=1]=1;vec.push_back(1); fo(i,1,tot) { int lca=get_lca(a[i],st[top]);原创 2018-04-25 21:15:10 · 614 阅读 · 0 评论 -
从前有个多项式
想写一个多项式全家桶就开了这个坑 注意所有运算均是在模x^2n的域中进行的Part A:多项式ln,exp,求幂 多项式ln:假设我们要求ln(f(x))ln(f(x))\ln(f(x)) 我们不妨求导之后再积分,那么就是∫f′(x)f(x)∫f′(x)f(x)\int {f'(x)\over f(x)} 只需要求逆多项式exp: 先介绍牛顿迭代 假设我们知道了一个函数g(x...原创 2018-08-21 16:09:30 · 365 阅读 · 0 评论 -
蒟蒻的读入优化模板
不能读负数,不能各种读神奇的格式。 那你摆出来干什么,赚访问量?int get() { char ch;while (!isdigit(ch=getchar())); int o=ch-48;while (isdigit(ch=getchar())) o=o*10+ch-48; return o;}哎呀,被法线啦(>_<)原创 2016-06-15 20:47:12 · 1814 阅读 · 0 评论 -
各种有用的东西、黑科技、技巧
转自WerKeyTom_FTD的blog 1、整体二分及cdq分治实现时,每个区间不需要单独开队列。可以把操作弄到一个数组了,然后多两个参u、v表示这个区间的操作在u~v,做完后对每个操作打标记表示是否往右区间传即可。 2、两个long long相乘取模怎么办? 第一种是快速乘,类似快速幂,复杂度多了个log 第二种是找一个比较小的数,然后搞一波,详见代码ll qsc(ll x,ll y){转载 2016-03-16 20:25:06 · 2091 阅读 · 0 评论 -
splay旋转模板
splay旋转模板void rotate(int x) { int y=f[x],z=son(x);f[x]=f[y]; if (f[x]) t[f[x]][son(y)]=x; t[y][z]=t[x][1-z]; if (t[x][1-z]) f[t[x][1-z]]=y; f[y]=x;t[x][1-z]=y;}void splay(int x,in原创 2016-04-20 20:49:53 · 1821 阅读 · 0 评论 -
线筛模板
忘了的时候来抄模板(我记性差~)scanf("%d%d",&n,&m);if (n>m) swap(n,m);mu[1]=1;fo(i,2,n) { if (!f[i]) p[++tot]=i,mu[i]=-1; fo(j,1,tot) { int k=p[j]*i;if (k>n) break;f[k]=1; if (!(i%p[j])) break;m原创 2016-03-16 20:46:48 · 797 阅读 · 0 评论 -
组合数取模模板
组合数取模模板(Pascal(到时候改C++))function fact(x,y:longint):note;var k:note;begin if x<a[y] then begin fact.e:=sum[x,y];fact.f:=0;exit; end; fact.f:=x div a[y];k:=fact(x div a[y],y原创 2016-03-19 16:18:44 · 1293 阅读 · 0 评论 -
高斯消元模板
高斯消元模板void gauss() { fo(i,1,n-1) { fo(j,i+1,n) if (abs(matrix[j].a[i])>abs(matrix[i].a[i])) swap(matrix[i],matrix[j]); fo(j,i+1,n) { db f=matrix[j].a[i]/matrix[原创 2016-03-21 21:03:46 · 686 阅读 · 0 评论 -
SA模板
sa模板(pascal倍增)for i:=1 to n do begin s[i]:=t[i];x[i]:=ord(s[i]); if x[i]>max then max:=x[i]; inc(ws[x[i]]); end; for i:=1 to max do inc(ws[i],ws[i-1]); for i:=n原创 2016-03-25 21:38:11 · 939 阅读 · 0 评论 -
离散化模板
离散化模板(看不懂%%%)void prepare(int *x) { fo(i,1,n) data[i]=x[i]; sort(data+1,data+n+1); int m=unique(data+1,data+n+1)-data-1; fo(i,1,n) x[i]=lower_bound(data+1,data+m+1,x[i])-data;}原创 2016-04-13 20:39:40 · 1915 阅读 · 1 评论 -
树链剖分模板
树链剖分(两遍dfs)void dfs(int x,int y) { size[x]=1;fa[x]=y;d[x]=d[y]+1;int k=0; rep(i,x) if (t[i]!=y) { dfs(t[i],x);size[x]+=size[t[i]]; if (size[t[i]]>k) k=size[t[i]],son[x]=t[i];原创 2016-03-28 19:34:00 · 1087 阅读 · 0 评论 -
ac自动机模板
ac自动机模板(makefail)void makefail() { for(int i=0,j=1;i<j;) { int x=d[++i]; fo(k,0,25) if (trie[x].son[k]) { int y=trie[x].son[k]; if (x) {原创 2016-04-11 20:07:25 · 946 阅读 · 0 评论 -
SA模板
sa模板(c++倍增)void tsort() { memset(ws,0,sizeof(ws));int mx=0; fo(i,1,n) ws[x[y[i]]]++,mx=max(mx,x[y[i]]); fo(i,1,mx) ws[i]+=ws[i-1]; fd(i,n,1) sa[ws[x[y[i]]]]=y[i],ws[x[y[i]]]--;}void g原创 2016-04-15 20:04:21 · 1570 阅读 · 0 评论 -
BM模板
我之前可能学了假的BMnamespace BM{ vector<int> h[N]; int cnt,fail[N],d[N],mx; vector<int> work(int n,int *a) { h[cnt=mx=0].clear(); fo(i,1,n) { int now=-a[i]; for(unsigned j=0;j<h[c...原创 2019-05-08 22:30:49 · 360 阅读 · 0 评论