模板库
忘了的时候来copy(我记性差)
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
[模板]BM优化线性递推
又水了一篇博客=w=namespace BM{ vector<int> h[N]; int cnt,fail[N],d[N],an[N],mx,k,f[N],g[N],p[N],trs[30][N]; void mult(int *a,int *b,int *c) { fo(i,0,2*k-2) g[i]=0; fo(i,0,k-1) fo(j,0,k-1) (g[i...原创 2019-07-04 17:08:20 · 285 阅读 · 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 · 340 阅读 · 0 评论 -
MTT小结
前言随便乱写,意识流警告,反正只是当个板子因为要写long double所以可能比普通7次的FFT还要慢?!站在常数的底端.jpgMTT假设我们要求A(x)∗B(x)A(x)*B(x)A(x)∗B(x)先把P拆成P\sqrt PP,每个数拆成a∗p+ba*\sqrt p+ba∗p+b,然后分别求FFT,最后组合起来这样要7次我们可构造P(x)=A(x)+iB(x),Q(x)=A...原创 2019-03-12 22:37:19 · 986 阅读 · 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 · 338 阅读 · 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 · 614 阅读 · 0 评论 -
单纯形模板
学习UOJ上dalao们的初始化黑科技原创 2017-05-12 12:48:13 · 808 阅读 · 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 · 730 阅读 · 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 · 1150 阅读 · 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 · 1516 阅读 · 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 · 1757 阅读 · 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 · 1793 阅读 · 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 · 1515 阅读 · 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 · 1833 阅读 · 1 评论 -
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 · 919 阅读 · 0 评论 -
树链剖分模板
树链剖分(两遍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 · 1046 阅读 · 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 · 747 阅读 · 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 · 1210 阅读 · 0 评论 -
自然数幂和模板
自然数幂和模板(第一类斯特林数)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 · 1079 阅读 · 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 · 659 阅读 · 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 · 905 阅读 · 0 评论 -
带花树模板
背下来就好了。。。。#include <queue>#include <cstdio>#include <cstring>#include <algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)#def...原创 2019-09-06 11:10:55 · 350 阅读 · 0 评论