首页 > TAG信息列表 > fath
Nearest Common Ancestors(LCA)(最近公共祖先LCA)
题目链接: http://poj.org/problem?id=1330 这个问题做法比较多,记录下自己的写法。 1,首先将数据存储在邻接表里,先将数据按照并查集存储,然后将叶子节点的深度全部神深搜出来,存储到深度数组中。 2,然后就是具体做法: 先判断两个数是否在一棵树的同一层上,若不是先调整到同一层上LCT
LCT (Link - Cut Tree) 今天,YCC 本来是想搞一搞数论,但是老吕说:今天我闲着,给你们讲一讲LCT。 可是,我不闲啊! LCT 是什么? 是一个由若干棵子结点无序的有根树组成的森林,支持对树的分割, 合并, 对某个点到它的根的路径的某些操作, 以及对某个点的子树进行的某些操作。 基本概念 原树:就CF832D题解
题目传送门 Description 给定一棵树上的三个点 \(a,b,c\),你要制定两条起点和终点都在这三个点中的路径,使得两条路径重叠的节点最多。 Solution 感觉我的方法和大众不同,显然是珂以Hack的 考虑分类讨论,分三类: \(a\) 点在这两条路径的起止点中出现 \(2\) 次。 \(b\) 点在这两条路径极地网络
问题描述 国防部想要通过无线网络与北极地区的一些军事哨所建立通讯连接。有两种不同的通讯技术将要被用来建立这个网络系统:无线电和卫星电话。每个哨所都将配置无线电收发器。只有部分哨所将配置卫星电话。 任意两个配置了卫星电话的哨所可以通过卫星来通信,卫星通信不受地域树链剖分求LCA(洛谷P3379)
#include<bits/stdc++.h> using namespace std; const int maxn=5e5+10; vector<int>g[maxn]; int head[maxn],tot; void add(int fr,int to){ g[fr].push_back(to); g[to].push_back(fr); } int size[maxn];//子树大小 int fath[maxn];// int maxson[maxn];/关于倍增
P3379 【模板】最近公共祖先(LCA) 【题目大意】 给你树的节点个数\(n\),询问个数\(m\)和树根\(s\), 输入\(n,m,s\); 输入\(n\)对\(x,y.\)表示\(x,y\)结点之间有一条边 输入\(m\)对\(a,b.\)表示求\(a,b\)的最近公共祖先 【思路】 下面的解释均以这个图为例 今天用这道题来说一下倍增2018-2019 ACM-ICPC Brazil Subregional Programming Contest L. Subway Lines
下午小细节没处理好,然后WA了。晚上静心改了改就好了。开心! 不过.....499ms? L. Subway Lines 在网上搬了找重心的dfs代码。 得找lca,但是我已经忘了该用什么算法,因为很久之前看的找lca的题/算法,但是太久没用,忘了.... 所以...就没用什么算法模板了。 从重心G开始遍历