acm算法模板适合初学者使用_第1页
acm算法模板适合初学者使用_第2页
acm算法模板适合初学者使用_第3页
acm算法模板适合初学者使用_第4页
acm算法模板适合初学者使用_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、否存在以该结点为终止结点的东东,可以更改为任意的属性2now+;intadd()memset(&trienow,0,sizeof(trienow);returnnow+;intinsert(char*str)intpre=0,addr;while(*str!=0)addr=*str-BASE_LETTER;if(!triepre.nextaddr)triepre.nextaddr=add();triepre.caddr+;pre=triepre.nextaddr;str+;triepre.flag=1;returnpre;intsearch(char*str)intpre=0,addr

3、;while(*str!=0)addr=*str-BASE_LETTER;if(!triepre.nextaddr)return0;pre=triepre.nextaddr;str+;if(!triepre.flag)return0;3求线段所在直线structLinedoublea,b,c;structPointdoublex,y;LineGetLine(Pointp1,Pointp2)/ax+by+c=0返回直线的参数Lineline;line.a=p2.y-p1.y;line.b=p1.x-p2.x;line.c=p2.x*p1.y-p1.x*p2.y;returnline;求外接圆已*

4、知*三*角*形*三*个*顶*点坐标,求外接圆的半径和坐标5求/半径求/坐标求内接圆7/求半径/求坐标9判断点是否在直线上/TxTxTxTxTxTxTxTxTxTxTxTxTx*判断点是否在直线上*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*TxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTx10判断点p是否在直线pl,p2structPointdoublex,y;boolisPointOnSegment(Pointpl,Pointp2,Pointp0)/叉积是否为0,判断是否在同一直线上if(pl.x-p0.x)*(p2.

5、y-p0.y)-(p2.x-p0.x)*(pl.y-p0.y)!=0)returnfalse;/判断是否在线段上if(p0.x>pl.x&&p0.x>p2.x)|(p0.x<pl.x&&p0.x<p2.x)returnfalse;if(p0.y>pl.y&&p0.y>pl.y)|(p0.y<pl.y&&p0.y<p2.y)returnfalse;returntrue;简单多边形面积计算公式为点的个数,中记录的是点的坐标stein算法求最大共约数最长递增子序列模板员员o(nlogn算法

6、实现)的个数每组成员的数量读入每个成员输出结果判断图中同一直线的点的最大数量最大点的个数条件中点的左边不会大于12这样可以0让)(2/,/3)(2,3)等价条件中点的左边不会大于14公因数和公倍数已知先序中序求后序15int)mid.length()-i-1)ntmain()tringpre,mid;hile(cin>>pre)cin>>mid;fun(pre,mid);cout<<post<<eneturn0;深度优先搜索模板n用来标识要搜索的元素nn用来标识搜索元素的个数n用来存储数据的数组注意,数组默认是按照1n存储,即没有第行下面是个方向

7、的搜索rch(intx,inty)1搜索过进行标记1x-11ntn1x+11nt11-1nt+117面是8个方向的搜索搜索过进行标记匈牙利算法集集二部图匹配BFS实现/匈/牙利算法实现#defineMAX31二0部图一侧顶点的最大个数/二分图的两个集合分别含有和个元素。存储邻接矩阵。为最大匹配数是用的队列,是用来记录交错链的,同时也用来记录右边的点是否被找过分别表示两边的点与另一边的哪个点相匹配初始化所有点为未被匹配的状态对于左边每一个未被匹配的点进行一次找交错链19每次时初始化右边的点初始化的队列下面这部分代码从初始的那个点开始,先把它能找的的右边的点放入队列如果找到一/个/未被匹配的点,则

8、结束,找到了一条交错链下面这部分/是/扩展结点的代码如果该右边点是一个已经被匹配的点,则是与该点相匹配的左边点从该左该边该点出发,寻找其他可以找到的右边点没有找到交错链更改交错链上匹配状态21匹配的边/数加一带输出路径的prime算法#prime模板F面是算法部分,是计算所有路径的和22kruskal模板节点个数边个数标记边是否用过23intbegin,end,dis;dataMAXEDGE;classUFSetprivate:intparentMAX+1;intsize;public:UFSet(ints=MAX);intFind(intx);voidUnion(introot1,intro

9、ot2);UFSet:UFSet(ints)size=s+1;memset(parent,-1,sizeof(int)*size);voidUFSet:Union(introot1,introot2)inttemp=parentroot1+parentroot2;if(parentroot1<=parentroot2)parentroot2=root1;parentroot1=temp;elseparentroot1=root2;parentroot2=temp;intUFSet:Find(intx)intp=x;while(parentp>0)p=parentp;intt=x;w

10、hile(t!=p)t=parentx;parentx=p;x=t;24/25存放点点之间的距离,26存放点到的距离从开始存放标记点是否被选中顶点的个数#初始点是的算法#并查集模板初始化合并,注意参数为根节点返回根节点返回集合的个数27高精度模板为正非负数计算部分:、都必须非负x都必须非负(结果可能为负)、非负非负,且必须小于多精度除以、非负,调用调用多精度除以多精度,非负,为正调用调用必须非负!开平方取整,非负;是非负数。除了开头可能有夕卜,必须非负数之间的“小于”以下是负数支持:11取负同样,的绝对值不能超过11预处理,保证的实际长度开头补到和一样长初始大小:1110;,还有,进0位:1,

11、/,给开头添加一个“1”结果为负标志如果<交换结果标记为负32#差结果本位够减需要借位#初值:#保=证后"面0加"果0后也/符/合:部分积的要求!#以免后面特殊处理!先申请位整除结果为商取余保留33初始化成全初始为空,每次下移一个字符等价(注意:不是加)余数大于等于除数时余数减去除数商对应位加34最多做次大数乘法35#是!手工开平方。若要返回余数,前的就奇位取前-偶位取前占一位置末位试商,从到将结果追加!取后位下移位,追加;即36以下是负数支持!0="0n"0"化简“003”等数0nd_first_not_of('0全0338st

12、ringSAdd(stringx,stringy)if(x0='-'&&y0='-')return-(-x+-y);if(x0='-')returny-x;if(y0='-')returnx-y;returnx+y;/f17(needf1,f2,f13,f14,f15)stringSMinus(stringx,stringy)if(x0='-'&&y0='-')return-y-x;if(x0='-')return-(-x+y);if(y0='-')returnx+-y;returnx-y;/f18(needf1,f3,f4,f15)stringSMul(stringx,stringy)if(x0='-'&&y0='-')return(-x)*(-y);if(x0='-')return-(-x)*y);if(y0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论