题目: 题目大意: 给一棵树,然后从树上拿出来几个点,问这几个点是否在同一条链上或者某些点和这条链的距离是否为1,满足 这样的条件 即 Yes,反之则 No. 考察点: LCA、最近公共祖先 侃侃: 同一条链上的点有啥特征呢? 在同一条链上,最深的点与较浅的点的最近公共祖先一定是 较浅的点。 所以, ...
分类:
其他好文 时间:
2020-05-03 20:42:56
阅读次数:
68
LCA( ),最近公共祖先,定义为两节点最近的公共祖先~~好像是废话~~ 前置芝士: 图论 此文章中均设 $\mathrm{fa}_i$ 为 $i$ 的父亲,$\mathrm{dep}_i$ 为 $i$ 的深度。 暴力 显然我们找出节点的所有祖先再 $n^2$ 比较即可。 当然你也可以一层层往上跳。 ...
分类:
其他好文 时间:
2020-05-03 10:18:17
阅读次数:
119
Description 有一个森林最初由 $n$ 个互不相连的点构成 你需要处理以下 $m$ 次操作: :添加从顶点A到B的边,使 $A$ 成为 $B$ 的子节点,其中保证 $A$ 是一个根顶点,$A$ 和 $B$ 在不同的树中。 :切断点 $A$ 到其父节点的边,保证 $A$ 是一个非根节点。 : ...
分类:
其他好文 时间:
2020-05-02 23:09:45
阅读次数:
65
其实如果这是一颗树的话很好搞,把$s$到$lca(s,t)$ 向上连,$lca(s,t)$到$t$向下连即可(然而事情并不是这样子的...)。 我们考虑什么样的情况是一定可行的呢?每两个点之间都有两条以上的路径,那就可以一边向前,一边向后,绝对可以。也就是求双联通分量以内是一定可以的,所以考虑缩点。 ...
分类:
Web程序 时间:
2020-05-02 22:36:49
阅读次数:
81
1.centos8下载安装 centos官网下载最新的版本,可以选择速度比较快的镜像下载,比如aliyun。 http://isoredirect.centos.org/centos/8/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso 我是在acloud上安装 ...
分类:
其他好文 时间:
2020-05-02 16:47:11
阅读次数:
198
The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U and V as descendants. A binary search tree (BST) i ...
分类:
其他好文 时间:
2020-05-02 14:54:12
阅读次数:
50
农夫约翰有N(2 include include using namespace std; const int maxn = 80005; int n, m, head[maxn], len= 1, dfn[maxn], tot= 1, headq[maxn], vis[maxn], dis[max ...
分类:
其他好文 时间:
2020-05-01 22:12:28
阅读次数:
61
首先序列上的问题可以hash加二分搞 到树上依然可以hash加二分搞, 配合 $O(1)$ 的 $RMQ LCA$ 和长链剖分求 $k$ 级祖先 可以做到 $O(m\log n)$, 但是我天生自带大常数, 会 $T$ qwq(于是我放弃了双hash, 然后过了淦) 会在第六个点 $TLE$ 的代码 ...
分类:
其他好文 时间:
2020-04-28 10:00:41
阅读次数:
64
这个方法要开倍增求 $LCA$ 方法的两倍空间, 还要开额外数组记录深度和 $dfn$, 各位勇士慎重。 可以 $O(n + n\log n)$ 预处理 $O(1)$ 动态回答 $LCA$ (常数和RMQ一样), 不谈空间缺点的话还是吊打倍增求 $LCA$ 的。 算法流程: 算法的过程就是在便利有根 ...
分类:
其他好文 时间:
2020-04-27 11:26:33
阅读次数:
56
用到的算法 割边 + 缩点(得到边连通分量) + 朴素LCA 算法解析 + 无向图区分重边与同一条边的反方向: 对每一条边都用一个变量id来标识,一条无向边的两个方向用同一个id表示。 + 割边: ,即以点v为根的子树不能到达点u及以上,所以边uv为一条割边。 + 缩点(得到边双连通分量): 去掉桥 ...
分类:
其他好文 时间:
2020-04-26 13:55:29
阅读次数:
62