ACM•Poj
文章平均质量分 80
kksleric
这个作者很懒,什么都没留下…
展开
-
Tarjan离线算法求LCA小结
求LCA的两种做法不多解释,这篇文章有详细解释。以前以为转RMQ法求LCA可以取代tarjan,实则不然,Tarjan不仅效率更高,而且可以维护一些路径上的统计量。于是又离线Tarjan法做了一些题目。比较经典的是SPOJ 3978 Distance Query,是高效求解次小生成树的基础,详见《扩展Tarjan求解树上两点路径上的最长边》poj 3728 The merchant原创 2012-08-04 15:06:47 · 1354 阅读 · 0 评论 -
poj 3460 Booksort(IDA*)
题目大意:有N(1 ≤ N ≤ 15)本书,每本与每本的高度都不一样。现在可以按照以下的办法整理书:抽出一摞书,再保持原来的顺序插进一个位置。这样的话我们称之为“一次操作”。现在你需要求出至少需要经过几次操作才能让书变成按高度升序的状态。如果需要5次或者多于5次,只需要输出“5 or more”。解法:IDA*是一种特殊的dfs,每次dfs都设置一个阀值,一旦解的深度超出阀值就回溯。只不过ID原创 2012-10-03 19:36:32 · 915 阅读 · 0 评论 -
poj 2942 Knights of the Round Table
题意:在一张无向图中,问有多少个点不属于任意一个奇圈,孤立点不属于奇圈首先明确两个定理:定理1:对于一个点双连通分量,如果找个一个奇圈那么这个分量的其他点也必然在某个奇圈内。 证明很简单,设ab是一个奇圈上的点,c不属于这个奇圈,设c到a和边数为m到b的边数为n,若m+n为奇数,则c位于由这个奇环除ab外的其他边(偶数条)构成一个奇环,如果m+n为偶数,那么c到ab的路径与ab边构原创 2012-08-12 09:31:21 · 550 阅读 · 0 评论 -
poj 2890 Matrix Multiplication
题意:对一个对焦线元素为1、k*k的01矩阵在布尔运算的意义下进行2006次幂运算(k解法:由于是布尔意义下的运算,k次矩阵乘相当于长度为k的路径个数,由于2006>k,因此可以看做求一个图的传递闭包。可以首先强连通分量缩点,记录每个强连通分量中的点数,在缩点后的图G ‘上对每个点进行一次dfs,求出此连通分量能到达多少个点,累加每个强连通得到总共有多少条路径。import java.原创 2012-08-12 23:05:09 · 663 阅读 · 0 评论 -
poj 3467 Cross Counting
题意:给出一个M*N 的矩阵,矩阵中每个元素都有一种颜色(1 ≤ N, M, C ≤ 100),10000条查询,更改某个元素的颜色或查询某种颜色的corss有多少个。We say there exists a cross of size k centered at the cell (x,y)iff all cells lying in the x-th row or the y原创 2012-08-30 16:11:04 · 809 阅读 · 0 评论 -
Poj 4047 Garden /2012金华邀请赛D题(线段树)
题意:给出长度为200000的数列,进行200000次下列操作:0 x y 将x的值置为y1 x y 交换x和y的值2 x y 求[x,y]区间内和最大的一个连续的长度为k的区间(y-x>k)解法:显而易见的线段树开始一直想维护每个区间的最大k区间,但是一直想不出怎么维护父节点和子节点的关系。估计如果实在现场会困死在此题。。。 于是需要转换一下思维,把点当做区间把区原创 2012-05-09 22:08:29 · 2102 阅读 · 0 评论 -
poj 2843 Cutting Cake
题意:一块N*N大的蛋糕M次讯问,每次切走一个矩形,问每次切的矩形被分成了多少块(1 解法:显然是求某个区域内的连通分量数目,由于这个区域内的元素在访问后会被切除,因此每个元素只被访问一次,因此可以通过dfs或bfs求得某个区域内的连通分量的个数,均摊复杂度。但是每次寻找遍历的起始点(即区域内未被切走的蛋糕)复杂度为O(N^2),因此需要优化,最坏情况是怎么产生的呢?当某个区域内有连续的已原创 2012-08-30 16:26:13 · 731 阅读 · 0 评论 -
poj 2793 Cactus(无向仙人掌图判定)
有向Cactus图:1.它是一个强连通图。2.它的任意一条边都属于且仅属于一个环。有向Cactus图判定:性质1 有向Cactus的DFS树没有横向边(不等价于非父子边)。性质2 low(u)是v的儿子)性质3 设某个点v有a(v)个儿子的low值小于dfn(v),同时v自己有b(v)条逆向边。那么a(v)+b(v)。这三条性质也就是一个有向图是有向Cactus的充要条原创 2012-08-15 19:01:32 · 2757 阅读 · 0 评论 -
边双连通分量
关于桥与双连通分支的定义及求法void大神给出了很详尽的介绍图的割点、桥与双连通分支总结几条做题过程中发现的关于边双连通分量的性质:1.将图中每个边连通分量缩为一个点后,只连端点不位于同一连通分量中的边,则将图转换成了一棵树,且树中的边都是父子边。2.在对图进行搜索时,图中的边分为父子边和返祖边(交叉边),则一个具有n个点的边连通分量中有且仅有n-1条父子边,且可由着n-1以条原创 2012-08-12 09:12:37 · 1137 阅读 · 0 评论 -
POJ图论列表
做题记录: AC 典型 好题或较难 待做 WA 多次wa后ac1062* 昂贵的聘礼 枚举+dijkstra加点构图1087A Plug for UNIX 2分匹配+Floyd 1094 Sorting It All Out floyd +拓扑1112* Team Them Up! 2分图染转载 2012-04-09 09:46:04 · 1344 阅读 · 0 评论 -
poj3487稳定婚姻匹配
稳定婚姻问题:有n位男士和n位女士,每一个人都对每个异性有一个喜好度的排序,代表对他的喜爱程度,现在希望给每个男士找一个女士作配偶,使得每人恰好有一个异性配偶。如果男士u和女士v不是配偶但喜欢对方的程度都大于喜欢各自当前配偶的程度,则称他们为一个不稳定对。稳定婚姻问题就是希望找出一个不包含不稳定对的方案。 算法非常简单,称为求婚-拒绝算法,每位男士按照自己喜欢程度从高到低依次给每位原创 2012-07-16 21:20:19 · 2927 阅读 · 1 评论 -
排列组合&区间计数
Poj 1850 Code题意:由最多8位的小写字母组成的单词(每个单词各个位置上的字母按照升序排列)先按长度排序再按照字典序排列,先给出一个单词,问此单词的排名;解法:首先求出长度小于l该单词长度的单词的个数。然后开始统计相同长度且排在前面的单词数,从第一个字母开始,对于每个字母x,求出第i为是x前面的字母时能组成多少单词。。。int res=0,len=s.length(),l原创 2012-05-09 22:23:36 · 624 阅读 · 0 评论 -
POJ2892地道战Tunnel Warfare(线段树)
点击打开题目链接对连续的村庄进行三种操作和问询D x: The x-th village was destroyed.Q x: The Army commands requested the number of villages that x-th village was directly or indirectly connected with including itself.R:原创 2012-03-31 18:13:08 · 728 阅读 · 0 评论 -
DLX解决3-SAT问题
1.关于DLX的重复覆盖:根据与精确覆盖概念的区别可知,只需改变remove()和resume()函数控制删除和恢复的过程即可实现,对于求解最少步数问题,可借助ida*中的h()函数优化。2.重复覆盖+精确覆盖:某些元素可重复覆盖(目标),而某些元素只能精确覆盖(每类元素只能使用一次),这是要对前m列进行重复覆盖的删除回复操作,对后面的列进行精确覆盖的操作,也有一些特殊情况可直接使用重复覆盖代原创 2012-08-26 16:27:25 · 1444 阅读 · 1 评论