1 / 32
文档名称:

acm 算法模板 适合初学者使用.doc

格式:doc   大小:72KB   页数:32页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

acm 算法模板 适合初学者使用.doc

上传人:drp539606 2019/6/24 文件大小:72 KB

下载得到文件列表

acm 算法模板 适合初学者使用.doc

相关文档

文档介绍

文档介绍:字典树模板 2求线段所在直线 5求外接圆 5求内接圆 6判断点是否在直线上 8简单多边形面积计算公式 8stein算法求最大共约数 9最长递增子序列模板——o(nlogn算法实现) 9判断图中同一直线的点的最大数量 10公因数和公倍数 12已知先序中序求后序 12深度优先搜索模板 13匈牙利算法——二部图匹配BFS实现 15带输出路径的prime算法 17prime模板 18kruskal模板 19dijsktra 22并查集模板 23高精度模板 24三角形面积计算//已知三条边和外接圆半径,公式为s=a*b*c/(4*R)doubleGetArea(doublea,doubleb,doublec,doubleR){returna*b*c/4/R;}//已知三条边和内接圆半径,公式为s=prdoubleGetArea(doublea,doubleb,doublec,doubler){returnr*(a+b+c)/2;}//已知三角形三条边,求面积doubleGetArea(doulea,doubleb,doublec){doublep=(a+b+c)/2;returnsqrt(p*(p-a)*(p-b)*(p-c));}//已知道三角形三个顶点的坐标structPoint{doublex,y;Point(doublea=0,doubleb=0){  x=a;y=b;}};doubleGetArea(Pointp1,Pointp2,Pointp3){doublet=-*+*+*-*-*+*;if(t<0)t=-t;returnt/2;}字典树模板#include<>#include<>#include<>#defineBASE_LETTER'a'#defineMAX_TREE35000#defineMAX_BRANCH26struct{   intnext[MAX_BRANCH];//记录分支的位置   intc[MAX_BRANCH];//查看分支的个数   intflag;//是否存在以该结点为终止结点的东东,可以更改为任意的属性}trie[MAX_TREE];intnow;voidinit(){now=0;memset(&trie[now],0,sizeof(trie[now]));   now++;}intadd(){   memset(&trie[now],0,sizeof(trie[now]));   returnnow++;}intinsert(char*str){   intpre=0,addr;   while(*str!=0)   {       addr=*str-BASE_LETTER;       if(!trie[pre].next[addr])           trie[pre].next[addr]=add();         trie[pre].c[addr]++;       pre=trie[pre].next[addr];       str++;   }   trie[pre].flag=1;   returnpre;}intsearch(char*str){   intpre=0,addr;   while(*str!=0)   {       addr=*str-BASE_LETTER;       if(!trie[pre].next[addr])           return0;       pre=trie[pre].next[addr];       str++;   }   if(!trie[pre].flag)       return0;   returnpre;}pku2001题,源代码:voidcheck(char*str){intpre=0,addr;while(*str!=0){  addr=*str-BASE_LETTER;       if(trie[pre].c[addr]==1)  {   printf("%c\n",*str);   return;  }    printf("%c",*str);       pre=trie[pre].next[addr];       str++;}printf("\n");}charinput[1001][25];intmain(){inti=0,j;init();while(scanf("%s",input[i])!=EOF){  getchar();  insert(input[i]);  i++;}for(j=0;j<i;j++){  printf("%s