题目描述 给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。有q次询问,每次询问给出l r z,求sigma_{l<=i<=r}dep[LCA(i,z)]。(即,求在[l,r]区 ...
分类:
其他好文 时间:
2017-10-31 12:46:04
阅读次数:
197
这个题要求货车从a到b最大能运多少货物(不能输出-1),那么自然而然的就可以想到最大生成树,这个很好求,重点在于如何快速的查找树上两点间的最大边权,这个时候我们可以运用倍增来解决,因为这两个点都在树上,显然联通它们的路径上有些边是一定要走的,这些边就是它们到最近公共祖先的边,那么答案就在这些边当中, ...
分类:
其他好文 时间:
2017-10-29 15:15:20
阅读次数:
152
题意:先给了一张无向图,然后依次加边,每次求桥的数量 题解:先用一次tarjan,我们可以标记桥的位置和记录桥的数量同时记录fa数组,然后更新边的时候我们可以用lca,因为在tarjan缩点之后得到了一颗树,当连接a,b节点时,可以直观的看出从a,b的最近公共祖先到a,b之间所有的桥都会消失,我们可 ...
分类:
其他好文 时间:
2017-10-28 11:26:19
阅读次数:
115
整理一些树的,基本的,简单的一些知识。 先写一下关于树的定义,相关术语。 树,父节点、子节点、子树、祖先、兄弟、根节点、叶节点、直径、路径、重心、直径、最近公共祖先、生成树、dfs序,树形dp等 1、最近公共祖先 一般用倍增求LCA(Least Common Ancestors)。 按照朴素的做法, ...
分类:
其他好文 时间:
2017-10-27 13:14:23
阅读次数:
138
进程间通信(Interprocess Communication, IPC),经典的IPC:管道、FIFO、消息队列、信号量以及共享存储和套接字。 一、管道 管道是UNIX系统IPC的最古老的形式,所有的UNIX系统都提供此种通信机制。 1·、两个局限性: (1)半双工,数据只能在一个方向流动,现在 ...
分类:
系统相关 时间:
2017-10-16 11:10:58
阅读次数:
190
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入输出格式 输入格式: 第一行包含三个正整数N、M、S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来N-1行每行包含两个正整数x、y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树)。 接下来M行 ...
分类:
其他好文 时间:
2017-10-14 21:02:14
阅读次数:
528
[Description]小 T 要经常进行商务旅行,他所在的国家有 N 个城镇,标号为 1,2,3,...,N,这 N 个城镇构成一棵树。每个城镇可以买入和卖出货物,同一城镇买入和卖出的价格一样,小 T 想从 a走到 b,在这过程中,在某个城镇买入一个货物,然后在一个城镇卖出,可以是同一城镇买入和 ...
分类:
其他好文 时间:
2017-10-13 18:03:14
阅读次数:
169
作为一个数据结构学傻,终于要开始入这个坑了...... 之前一直不写有关数据结构的东西,是因为不会画那种很高端的图,所以一直不写,现在看来似乎没有办法避免了…… LCA,全称Least Common Ancestor,即最近公共祖先,顾名思义,LCA(u,v)就是u和v的所有共同祖先中深度最小的,很 ...
分类:
其他好文 时间:
2017-10-04 15:16:06
阅读次数:
176
题目链接 倍增LCA是个什么蛇皮原理啊,循环完了还得再往上跳一次才能到最近公共祖先 合着我昨天WA两次就是因为这个 建最大生成森林,因为图不一定是联通的,所以不一定是一棵树。这个地方用克鲁斯卡尔就好了 然后给这个森林跑一遍DFS,顺便倍增 然后对于每个询问跑LCA,倍增的时候已经顺便求出了最小边权, ...
分类:
其他好文 时间:
2017-09-28 10:07:02
阅读次数:
133