题意:给你一棵树,求两个点的最近公共祖先. 思路:因为只有一组询问,直接数组模拟好了. (写得比较乱) 原题请戳这里 #include <cstdio> #include <bitset> #include <cstring> #include <algorithm> using namespace std; int first[10005],v[10005],next[10005]; int main() { int cas; scanf("%d…
51nod 1766 树上的最远点对 | LCA ST表 线段树 树的直径 题面 n个点被n-1条边连接成了一颗树,给出a~b和c~d两个区间,表示点的标号请你求出两个区间内各选一点之间的最大距离,即你需要求出max{dis(i,j) |a<=i<=b,c<=j<=d} Input 第一行一个数字 n n<=100000. 第二行到第n行每行三个数字描述路的情况, x,y,z (1<=x,y<=n,1<=z<=10000)表示x和y之间有一条长度为z的…
传送门:Problem 1330 https://www.cnblogs.com/violet-acmer/p/9686774.html 参考资料: http://dongxicheng.org/structure/lca-rmq/ 挑战程序设计竞赛(第二版) 变量解释: 对有根树进行DFS,将遍历到的节点按照顺序记下,我们将得到一个长度为2N-1的序列,称之为欧拉序列. total : 记录dfs遍历过程中回溯的节点编号,其实就是从0->2N-1. vs[ ] : 记录DFS访问的顺序,也就是…
题意: 求区间max-min st表模板 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #define N 50010 using namespace std; ],rmax[N][],n,l,r,q; int read() { ,neg=; char j=getchar(); ';j=getchar()) ; ';j=getchar()) ret=ret*+j-…
预备知识 st表(Sparse Table) 主要用来解决区间最值问题(RMQ)以及维护区间的各种性质(比如维护一段区间的最大公约数). 树状数组 单点更新 数组前缀和的查询 拓展:原数组是差分数组时,可进行区间更新,单点查询,当然想区间查询也有办法(维护两个树状数组即可). 区别 树状数组用来维护一个具有区间可减(加)性质的工具,所以可以用来维护区间前缀和. 区间最值不具有区间可减性,所以不能使用树状数组进行维护,而使用st表. st表的思想 初始化 预处理数组, f[x][i] 表示区间[x…
题意 一个长为 \(n\) 的字符串 \(s\),和 \(m\) 个询问.每次询问有 \(4\) 个参数分别为 \(a,b,c,d\). 要你告诉它 \(s[a...b]\) 中的所有子串 和 \(s[c...d]\) 的 最长公共前缀 \((\mathrm{LCP})\) 的最大值. \((1\le n,m\le 10^5, a\le b,c\le d,1\le a,b,c,d\le n)\) 题解 一开始看错了题 以为是 \([a,b]\) 中所有子串 和 \([c,d]\) 中所有子串的…
Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 23795   Accepted: 12386 Description A rooted tree is a well-known data structure in computer science and engineering. An example is shown below: In the figure, each…
http://poj.org/problem?id=1330 题意:给出一个图,求两个点的最近公共祖先. sl :水题,贴个模板试试代码.本来是再敲HDU4757的中间发现要用LCA,  操蛋只好用这个题目试试自己写的对不对. 下面是个倍增的写法,挺实用的. 好了,继续... ;  ][MAX],dep[MAX];       G[     G[to].push_back( }      dep[u]=d; parent[][u]=pre;     ;i<G[u].size();i++) {  …
链接:http://poj.org/problem?id=1330 题意:q次询问求两个点u,v的LCA 思路:LCA模板题,首先找一下树的根,然后dfs预处理求LCA(u,v) AC代码: #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<set> #include<string> #include<vector&…
Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 34657   Accepted: 17585 Description A rooted tree is a well-known data structure in computer science and engineering. An example is shown below:  In the figure, eac…