ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:19.05KB ,
资源ID:20699417      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20699417.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(NOIP算法分类总结C语言Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

NOIP算法分类总结C语言Word格式.docx

1、 If(p%2=0|p%3=0)return false; For(int i=5;i=x;i+=2) If(p%i=0)return false; Return true;4.暴力分解质因数Int record10000;Void Baoli(long p) Long x=sqrt(p)+1,i,lc=0,ok=true; If(prime(p)=1) Lc=1; recordlc=p; Return; for(i=2;(i=x)&ok;i+) While(p%i=0) lc+; Recordlc=i;P/=i;If(p=1)ok=false;Break; 5.卡特兰数long f1001=

2、0;long CountCatalan(long n) f0=f1=1; for(long i=1;=n; fi=0; for(long j=1;j=p2)return;Int x=A(p1+p2)1,i=p1,j=p2;While(ij) while(Aix)j-;If(iaj)temp=aj-1,aj-1=aj,aj=temp;3.堆排序Void MinHeapify(int p,const int HeapSize)Int Small=p;If(p*2=HeapSize&ap*2aSmall)Small=p*2;If(p*2+1=Heapsize&ap*2+1=1;i-)MinHeapi

3、fy(i,HeapSize);ExtraMin(HeapSize);Part3.图论相关1.最小生成树prim算法Const int maxint=(116)-1;Int g,dis,n,visit;int Prim() int mst=0; Int dex=1,temp=-1; For(int i=1;i+)disi=maxint; Disdex=0;=n-1; Visitdex=1; For(int j=1;j+) If(visitj=0) If(gdexj!=0&gdexjdisj)disj=gdexj; If(temp=-1|disjdistemp)temp=j; dex=temp;

4、mst+=disdex; Return mst;/O(n2)2.最小生成树prim算法利用最小堆优化且图用邻接表存储const long maxint=(130-1);struct Hnode long dis,v; Hnode() v=0; dis=maxint;struct Gnode long v,w,pos,In; struct Gnode *next; Gnode() next=NULL; v=w=In=pos=0;G2001;long n,m,vis2001=0;long x,y,z;class HeapClasspublic: Hnode A2001; long Size; vo

5、id MinHeapify(long dep) long Small=dep; struct Hnode Temp; if(2*depA2*dep.dis) Small=2*dep; if(2*dep+11) i=dep/2; if(Ai.dis=x.dis)break; Adep=Ai,GAdep.v.pos=dep; dep=i; Adep=x; GAdep.v.pos=dep;Heap;long Prim() long MST=0; Heap.A1.v=1; Heap.A1.dis=0; G1.pos=1; for(int i=2; Heap.Ai.v=i; Gi.pos=i; for(

6、i=n/2; Heap.MinHeapify(i); for(int k=1;kv.pos!=-1)&(T-w)v.pos.dis) Heap.AGT-v.pos.dis=T-w; Heap.Decrease(GT-v.pos); T=T-next; Retrun MST;/O(nlogn)3.最小生成树kruskal算法利用并查集(的路径压缩)优化int f,m,n; /m表示边数,n表示节点数Struct Edge Int x,y,w;E100000,Temp,P;Int find(int x) If(fx!=x) fx=find(fx); Return fx;/并查集的性价比多高啊。就几

7、行代码。Void Qsort(int p1,int p2) If(p1 P=Erand()%(p2-p1)+p1; Int i=p1,j=p2; While(i while(Ei.wP.w)j-; If(i0&gkjgik+gkjgij) gij=gik+gkj;5.单源最短路的dijstra算法(写出来跟prim的样子差不多)Int visit=0,dis,gVoid Dijstra() disdex=0; for(int i=1; if(visitj=0) If(disdex+gdexjgdexi+disdexdisi) disi=gdexi+disdex; If(Inqueuei=0)

8、Inqueuei=1; Queue+tail=i; while(headtail);/理想状态下是O(E);7.BFS框架int g,Q,visit;int begin=0,end=0;void BFS() Qend+=1; visit1=true; while(beginkey=key;left=New-right=New-p=NULL; struct Tnode *F=NULL,*T=Root; F=T; if(T-key)key)T=T-left; else T=T-right;p=F; if(!F)Root=New; else if(F-key)F-left=New; else F-r

9、ight=New; struct Tnode *Search(int key) struct Tnode *T=Root;key)=key)return T; struct Tnode *Min(struct Tnode *T) struct Tnode *F=NULL; return F; void Delete(int key) struct Tnode *T=Search(key); /NO SON;T-left&right) if(T-p-left=T)T-left=NULL; else T-right=NULL; delete(T); return; /Only LeftSon; i

10、f(T-left=T-right=T- T-left-p=T-p; /Only RightSon;right- /Both LeftSon and RightSon; struct Tnode *M=Min(T-right); /Find M, TM if(M-left=M)M- /Remove Edge between M and M- else M- M-M-/Copy M to T;left=T)M-left=M;right=M;p=M; void Walk(struct Tnode *T)T)return; Walk(T-left); coutkeyl=1;Root-r=n;m=(n1

11、);left=Root-right=Root- Build(Root); /从根开始,建立链接结构 /建立链接结构的过程 void Build(Tnode *T) if(T-l)=(T-r) T-sum=AT-l; return; Tnode *L=new(Tnode),*R=new(Tnode);left=L;right=R; L-p=R-p=T;l=T-l;L-r=T-m;m=(L-l+L-r)1; R-m+1;R-r;m=(R-l+R- Build(L);Build(R);sum=L-sum+R-sum; /后序遍历 void Walk(Tnode *T) if(! Walk(T- co

12、utl)r)sum)r)&l)=p)break;m) else T=T- T-sum=x; /更新该节点上面所有节点sum值; T=T-sum=(T-sum+T-sum); /查询某区间关键字之和; int Ask(Tnode *T,int l,int r)l)=l&r)=r)return T-r)return T- if(rm) return Ask(T-left,l,r); else if(l return Ask(T-right,l,r); else return Ask(T-left,l,T-m)+Ask(T-right,T-m+1,r);3.Treap = BSTree + Heap

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1