随笔分类 -  数据结构

hdu1540 线段树(区间合并)
摘要:题意:有n个村庄,m个事件。村庄一开始是从小到大连续的,有三种操作(1)D a为摧毁第a个村庄。(2)Q a为询问与第a个村子直接和间接相连的村子有多少个。(3)R 为恢复最近销毁的那个村庄思路:难得想的是询问操作,恢复操作用一个栈保存就可以了。#include #include #include ... 阅读全文

posted @ 2013-12-08 20:42 黎昊明 阅读(165) 评论(0) 推荐(0)

poj2481 线段树(单点更新)
摘要:题意:有N条牛它们有一个自己的区间[s,e];题目输出的是有多少条牛能胜过自己,胜过的意思是如果牛j的区间能完全覆盖牛i的区间即为胜过。思路:这个可以转换到数轴上理解了,下图就为cow[j]胜过cow[i];所以只需先对左端点从小到大,右端点从大到小排序;再查询从右端点到最大值之间有多少个就是答案了... 阅读全文

posted @ 2013-11-23 20:41 黎昊明 阅读(361) 评论(0) 推荐(0)

二叉查找树 hdu(3791 && 3999)
摘要:所谓二叉搜索树(BST),就是每一个节点x,它的左子树中所有的关键字的值都小于x的关键字的值,而它右子树中所有的关键字的值都大于x的关键字的值。对于刚刚接触BST可以做做hdu 3791;hdu 3791 解题:可以用动态的创建指针,也可以用静态的数组,反正这个题的数据非常之小,用什么都无所谓了;动... 阅读全文

posted @ 2013-11-15 21:26 黎昊明 阅读(222) 评论(0) 推荐(0)

poj 1986
摘要:题目意思是给你n个顶点m条边,再给你每条边的权,和一个方向,那个输入可以参照poj1984,那个方向是没有用的,再下面有K个询问,求两点间的最短距离。我用了两种方法写此题,一种是RMQ+LCA模板#include#include#include#includeusing namespace std;... 阅读全文

posted @ 2013-07-26 17:12 黎昊明 阅读(348) 评论(0) 推荐(0)

hdu 3078 Network RMQ+LCA
摘要:题目的意思是给你一个案例,有n个顶点,和q个询问。再下来是n个顶点的权值,再是n-1条边。再下来是q行,当k=0时,就改a顶点的权值为b。当k>0时,为询问a到b两点距离的第k大的顶点。当两点的距离小于k时,就不会存在第k大的顶点了很显然是LCA,我以前使用tarjan算法,超时了。后来搜大神的代码... 阅读全文

posted @ 2013-07-24 22:14 黎昊明 阅读(281) 评论(0) 推荐(0)

hdu 2874 Connections between cities (离线LCA)
摘要:给n顶点和m条边求任意两点的最短距离,只要找到他们的最近公共祖先就可以求出他们的最短距离,先处理后询问,只是很明显的离线LCA可以用tarjan离线算法。昨天做了一道类似的,此题和poj1330很接近,几乎是它的一个扩展。如果做个那题此题可迎刃而解。#include#includeusing nam... 阅读全文

posted @ 2013-07-24 10:59 黎昊明 阅读(173) 评论(0) 推荐(0)

hdu 4607 Park Visit
摘要:本题的意思是说走k个顶点需要的最短路径,本题给你一颗树,我们只需DFS这颗树的最大深度R。如果k小于这个深度就是k-1,如果大于k,就是R-1+(k-r)*2;因为其他的边要走两次。#include #include #include #include #include #include using... 阅读全文

posted @ 2013-07-23 21:37 黎昊明 阅读(175) 评论(0) 推荐(0)

POJ1330 Nearest Common Ancestors
摘要:今天第一次学习(LCA)最近公共祖先算法,就做了这个题目,本题的意思就是给你一颗树,两个节点的最短路径上深度最小的节点,说白了就是LCA如有不懂得可以点击http://www.cnblogs.com/ka200812/archive/2011/08/02/2124984.html#include#i... 阅读全文

posted @ 2013-07-22 21:00 黎昊明 阅读(233) 评论(0) 推荐(0)

导航