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

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

ID:55630838

大小:73.50 KB

页数:32页

时间:2020-05-21

acm 算法模板 适合初学者使用.doc_第1页
acm 算法模板 适合初学者使用.doc_第2页
acm 算法模板 适合初学者使用.doc_第3页
acm 算法模板 适合初学者使用.doc_第4页
acm 算法模板 适合初学者使用.doc_第5页
资源描述:

《acm 算法模板 适合初学者使用.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、三角形面积计算1字典树模板2求线段所在直线5求外接圆5求内接圆6判断点是否在直线上8简单多边形面积计算公式8stein算法求最大共约数9最长递增子序列模板——o(nlogn算法实现)9判断图中同一直线的点的最大数量10公因数和公倍数12已知先序中序求后序12深度优先搜索模板13匈牙利算法——二部图匹配BFS实现15带输出路径的prime算法17prime模板18kruskal模板19dijsktra22并查集模板23高精度模板24三角形面积计算//已知三条边和外接圆半径,公式为s=a*b*c/(4*R)doubleGetArea(doublea,doubleb,

2、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

3、=0){  x=a;y=b;}};doubleGetArea(Pointp1,Pointp2,Pointp3){doublet=-p2.x*p1.y+p3.x*p1.y+p1.x*p2.y-p3.x*p2.y-p1.x*p3.y+p2.x*p3.y;if(t<0)t=-t;returnt/2;}字典树模板#include#include#include#defineBASE_LETTER'a'#defineMAX_TREE35000#defineMAX_BRANCH26struct{   intnext[

4、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; 

5、  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

6、)   {       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(tri

7、e[pre].c[addr]==1)  {   printf("%c",*str);   return;  }    printf("%c",*str);       pre=trie[pre].next[addr];       str++;}printf("");}charinput[1001][25];intmain(){inti=0,j;init();while(scanf("%s",input[i])!=EOF){  getchar();  insert(input[i]);  i++;}for(j=0;j

8、s",input[j])

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。