ACM专题
Jaya1989
Any
展开
-
trie树
<br />参考资料:<br />http://www.docin.com/p-48431870.html<br />poj练习:<br />trie树(静态建树、动态建树)(2513, 3630, 1204, 2503)<br /> <br />以下是来自豆丁网的截图.<br /><br /> <br /> <br /> <br /> <br /> <br /><br /> <br /><br /> <br />Trie树的实现.(这里只讨论简单Trie数)<br />1。结构体<br />//trie树转载 2010-07-18 11:52:00 · 1912 阅读 · 0 评论 -
欧拉回路
<br />转:http://sjtulibing.spaces.live.com/blog/cns!2F17193726A8CFC0!128.entry<br />欧拉回路简介:定义:在一个图中,寻找一条只通过每条边一次的路径,这叫做欧拉路径,如果起点和终点是同一点,那么这条回路叫做欧拉回路.判定一个图中是否存在欧拉回路:并不是每个图都存在欧拉回路.以下分三种情况:无向图:每个点的度数是偶数,则存在欧拉回路.有向图:每个结点的入度等于出度,则这个有向图中存在欧拉回路.总结:以上两种情况很简单,其原理归根结原创 2010-10-07 11:31:00 · 1505 阅读 · 0 评论 -
Plóya定理
<br />Plóya定理一般用于求着色在翻转/旋转后的不同方案数,很多书上都有介绍。<br />poj 2409 Let it Bead<br />http://poj.org/problem?id=2409<br />题目的大概意思是:给出c种颜色和s个珠子,让你来染色,求经翻转和旋转后最后能得到的不同染色方案数。<br />这就一个非常基本的Plóya问题。<br />#include<stdio.h>#include<math.h>int gcd(int a, int b) { if(!原创 2010-10-07 11:20:00 · 1041 阅读 · 0 评论 -
线段树
<br />最近做了好几题线段树的题目,<br />对线段树也有了更深的了解.<br />线段树概念:<br />线段树是建立在线段的基础上,每个结点都代表了一条线段[a , b]。长度为1的线段称为元线段。非元线段都有两个子结点,左结点代表的线段为[a , (a + b ) / 2],右结点代表的线段为[( a + b ) / 2 , b]。 <br /> <br />线段树结构如下:<br />struct Tree { int left, right; other....//其他节点信息}原创 2010-10-03 16:23:00 · 1272 阅读 · 1 评论 -
7凸包问题(Graham扫描法)
凸包(百度百科): 点集Q的凸包(convex hull)是指一个最小凸多边形,满足Q中的点或者在多边形边上或者在其内。右图中由红色线段表示的多边形就是点集Q={p0,p1,...p12}的凸包。顶点个数n(1)排序: 在点集Q中找最左下方的点p0,就是x坐标和y坐标都最小的点,其余的点计算它们的极坐标幅角,以幅角的非降序顺序来排序,如果有幅角相同的,最接近p0的优先。(这是《ACM程序设计培训教程》上的排序方法,由于看不懂什么是幅角,于是上网找了另一种排序方法,效果是一样的,具体见附)(2)转载 2010-08-27 21:34:00 · 1113 阅读 · 0 评论 -
二分图
From: http://imlazy.ycool.com/post.1603708.htmlhttp://old.blog.edu.cn/user3/Hailer/archives/2007/1829623.shtml 什么是二分图,什么是二分图的最大匹配,这些定义我就不讲了,网上随便都找得到。最大匹配: 图中包含边数最多的匹配称为图的最大匹配。 完美匹配: 如果所有点都在匹配边上,称这个最大匹配是完美匹配。 最小覆盖: 最小覆盖要求用最少的点(X集合或Y集合的都行)让每条边都至少和其中一个点关原创 2010-08-23 17:32:00 · 1003 阅读 · 0 评论 -
差分约束
<br />差分约束<br />http://fuliang.javaeye.com/blog/368214<br />(本文假设读者已经有以下知识:最短路径的基本性质、Bellman-Ford算法。) <br /> 比如有这样一组不等式: <br /> <br />X1 - X2 <= 0 <br />X1 - X5 <= -1 <br />X2 - X5 <= 1 <br />X3 - X1 <= 5 <br />X4 - X1 <= 4 <br />X4 - X3 <= -1 <br />X原创 2010-08-22 12:10:00 · 900 阅读 · 0 评论 -
RMQ求区间最值问题
<br />RMQ(Range Minimum/Maximum Query)问题:<br /> RMQ问题是求给定区间中的最值问题。当然,最简单的算法是O(n)的,但是对于查询次数很多(设置多大100万次),O(n)的算法效率不够。可以用线段树将算法优化到O(logn)(在线段树中保存线段的最值)。不过,Sparse_Table算法才是最好的:它可以在O(nlogn)的预处理以后实现O(1)的查询效率。下面把Sparse Table算法分成预处理和查询两部分来说明(以求最小值为例)。 <br />预处理原创 2010-08-02 16:59:00 · 1885 阅读 · 0 评论 -
网络流
<br />1。最大流问题<br />即给定源点s和汇点t, 求s到t的最大流.<br />几个名词:<br />(1).容量(capacity): 对于一条边(u,v),它的物品上线称为容量,记作C(u,v),对于不存在的边C(u,v)=0<br />(2).流量(flow): 实际运送的物品称为流量,记作F(u,v),且F(u,v) = -F(v,u),所有F(u,v)最多只有一个为整数(可以都是0)<br />(3).残流量: 容量与流量之差称为残流量(简称残量)<br />在最大流问题中, 容量C和原创 2010-07-28 12:49:00 · 775 阅读 · 0 评论 -
并查集
http://162.105.81.212/JudgeOnline/problem?id=1182http://162.105.81.212/JudgeOnline/problem?id=1161http://162.105.81.212/JudgeOnline/problem?id=2524并查集的应用 并查集学习:l 并查集:(union-find se原创 2010-05-29 22:15:00 · 1446 阅读 · 2 评论 -
最小生成树
<br />最小生成树的两种常用算法,即Kruskal和prim<br />是讲数据结构的书上应该都有介绍这两种算法, 这里就不罗嗦了,<br />练习: 最小生成树算法(prim,kruskal)(1789,2485,1258,3026)<br /> <br />poj 1258 Agri-Net<br />http://162.105.81.212/JudgeOnline/problem?id=1258<br />非常赤裸的求最小生成树,<br />不过我写的Kruskal过不了, 囧<br />//p原创 2010-07-20 20:39:00 · 780 阅读 · 0 评论 -
并查集
<br />详见: http://blog.csdn.net/SMCwwh/archive/2010/05/29/5633758.aspx原创 2010-07-18 15:34:00 · 781 阅读 · 0 评论 -
卡特兰数
卡特兰数转:http://www.mathoe.com/dispbbs.asp?boardid=89&ID=34522卡特兰式:Cn=1/(n+1)*C(2n,n) //C(2n,n)为组合数,图片显示不出来...囧 其递推关系试有:Cn+1=(4n+2)/(n+2)*Cn 或Cn=(4*n-2)/n+1*Cn-1另外:令C(1)=1,C(0)=1catal转载 2010-05-15 21:52:00 · 862 阅读 · 0 评论