代码仓库培训资料全.docx
《代码仓库培训资料全.docx》由会员分享,可在线阅读,更多相关《代码仓库培训资料全.docx(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、代码仓库目录:01.数学方法矩阵快速幂02.数学方法高斯消元(nave版)03.数学方法高斯消元(mid版)04.字符串啊Manacher算法(回文串)05.字符串啊KMP(字符串匹配)06.数据结构线段树(ZKW单点修改)07.数据结构线段树(RMQ)08.数据结构线段树(区间加+赋值)09.数据结构Splay树(未完全测试)/!10.数据结构AVL树(平衡树)11.图论图论最小生成树(prim)12.图论图论次小生成树13.图论图论最大流(Dinic)14.图论图论LCA+最大生成树(truck)15.动态规划背包01,多重,完全矩阵模板#include #include#includeu
2、singnamespace std;typedeflonglong ll;constint P =9973;constint N=13;ll n,m;struct matrix ll aNN;int row,col; matrix():row(N),col(N)memset(a,0,sizeof(a);/? matrix(int x,int y):row(x),col(y)memset(a,0,sizeof(a); ll*operator(int x)return ax; matrix operator*(matrix x) matrix tmp ;for(int i=0;i=n+1;i+)f
3、or(int j=0;j=n+1;j+) tmpij=0;for(int k=0;k=n+1;k+) tmpij=(tmpij+aik*xkj)%P;return tmp;voidoperator*=(matrix x)*this=*this* x; matrix operator(ll x) matrix ret;for(int i=0;i=1,tmp*=tmp)if(x&1)ret *=tmp;return ret;void print()for(int i=0;i=n+1;i+)for(int j=0;j=n+1;j+) printf(%d ,aij); puts();高斯消元,判断有无
4、解的#include#include#include#include#includeusingnamespace std;typedeflonglong LL;constdouble EPS=1e-6;constint N=55;struct matrixint aNN;int row,col; matrix():row(N),col(N)memset(a,0,sizeof(a); matrix(int x,int y):row(x),col(y) memset(a,0,sizeof(a);int*operator(int x)return ax;void print()for(int i=0
5、;irow;i+)for(int j=0;jcol;j+) printf(%d ,aij); puts(); puts();int Gauss(matrix a,int m,int n)int x_cnt =0;int col, k;/col为列号,k为行号for(k=0,col=0;km&coln;+k,+col)int r = k;/r为第col列的一个1for(int i=k;im;+i)if(aicol)r=i;if(!arcol) k-;continue;if(r!=k)for(int i=col;i=n;+i) swap( ari, aki);for(int i=k+1;im;+i
6、)if(aicol)/消元for(int j=col;j=n;+j)aij=akj;for(int i=k;im;+i)if(ain)return-1;if(k=n)return n-k;/返回自由元个数高斯消元,求出一组解的#include #include #include #include #include usingnamespace std;constint N =1010;constdouble EPS=1e-7;int m,n;double aNN,xN;int Gauss(int m,int n)int col=0, k=0;/col为列号,k为行号for(;km&coln;+
7、k,+col)int r = k;for(int i=k+1;ifabs(arcol)r=i;if(fabs(arcol)EPS)k-;continue;/列全为0if(r!=k)for(int i=col;i=n;+i) swap(aki,ari);for(int i=k+1;iEPS)double t = aicol/akcol;for(int j=col;j=n;j+)aij-=akj*t; aicol=0;for(int i=k ;iEPS)return-1;if(k =0; i-)/回带求解double temp = ain;for(int j=i+1; jn;+j) temp -=
8、 xj* aij; xi=(temp / aii);return0;Manacher算法#include#include#include#include#includeusingnamespace std;constint N=233333;/20W/在o(n)时间算出以每个点为中心的最大回文串长度int Manacher(string st)int len=st.size();int*p=newintlen+1; memset(p,0,sizeof(p);int mx=0,id=0;for(int i=1;ii)pi=min(p2*id-i,mx-i);else pi=1;while(sti
9、+pi=sti-pi)pi+;if(i+pimx)mx=i+pi;id=i;int ma=0;for(int i=1;ilen;i+)ma=max(ma,pi);delete(p);return ma-1;int main()/freopen(fuck.in,r,stdin);char stN;while(scanf(%s,st) string st0=$#;for(int i=0;sti!=0;i+) st0+=sti; st0+=#; printf(%dn,Manacher(st0);return0;KMP 字符串匹配#include#includeusingnamespace std;t
10、ypedeflonglong ll;constint N=100007;constint P=1000000007;char aN,bN;bool matN;int nextN;ll fN;void getNext(int m)int i=0,j=-1; next0=-1;while(im)if(j=-1|bi=bj)if(b+i!=b+j)nexti=j;else nexti=nextj;else j=nextj;void KMP(int n,int m) memset(mat,0,sizeof(mat);int i=0,j=0; getNext(m);while(in&jm)if(j=-1
11、|ai=bj)i+,j+;else j=nextj;if(!i&!j)break;if(j=m) mati=1;/printf(mat%dgetn,i); j=nextj;线段树(ZKW大法)#include#include#include#includeusingnamespace std;constint INF=0x3f3f3f3f;constint N=3000100;struct linetree#define lc (t1)#define rc (t11)int miN,M;inlinevoid build(int n) M=1;while(Mn)M=1; M-; memset(m
12、i,INF,sizeof(mi);for(int i=1+M;i=1;t-)mit=min(milc,mirc);void change(int t,int x)for(mit+=M=x,t=1;t;t=1) mit=min(milc,mirc);int query(int l,int r)int ans = INF;for(l+=M-1,r+=M+1;lr1;l=1,r=1)if(l&1)ans=min(ans,mil1);if( r&1)ans=min(ans,mir1);return ans;T;int main()int n,q,ord,x,y;for(;scanf(%d,&n);)
13、T.build(n);for(scanf(%d,&q);q-;) scanf(%d%d%d,&ord,&x,&y);if(ord)T.change(x,y);else printf(%dn,T.query(x,y);return0;线段树(RMQ)#include#include#include#includeusingnamespace std;constint INF=0x3f3f3f3f;constint N=600100;int n,ans,m,aN;struct node int l,r,id; node () node(int x,int y,int z)l=x;r=y;id=z;
14、bN,cN;inlinebool cmp1(node a,node b)return a.lb.l;inlinebool cmp2(node a,node b)return a.rb.r;struct linetree#define lc (t1)#define rc (t1)int lN,rN,maN,miN,M,taN,tiN;inlinevoid build(int n) M=1;while(Mn)M=1; M-; memset(ma,0,sizeof(ma); memset(mi,INF,sizeof(mi); memset(ta,0,sizeof(ta); memset(ti,INF
15、,sizeof(ti);for(int i=1+M;i=1;t-)lt=llc,rt=rrc;inlinevoid down(int t)if(tM)return;/leaf node malc=max(malc,tat); marc=max(marc,tat); talc=max(talc,tat); tarc=max(tarc,tat); tat=0; milc=min(milc,tit); mirc=min(mirc,tit); tilc=min(tilc,tit); tirc=min(tirc,tit); tit= INF;inlinevoid maintain(int t) mat=
16、max(malc,marc); mit=min(milc,mirc);inlinevoid tag(int t,int x) mat=max(mat,x); mit=min(mit,x); tat=max(tat,x); tit=min(tit,x);void change(int t,int L,int R,int x)if(L=lt&rt=R)tag(t,x);return;/in down(t);if(L=mid)change(lc,L,R,x);if(midM)/leaf node bt-M=ct-M=node(mit,mat,t-M);return; down(t); query(l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 代码 仓库 培训资料
限制150内