LCA
罗旅洲
Hello World!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LCA之树链剖分(模板)
#include #include #include #include using namespace std; const int maxx=500010; int be[maxx],ne[maxx*2],to[maxx*2],e=0; int fa[maxx],son[maxx],deep[maxx],size[maxx],jump[maxx]; void add(int x,int y){原创 2017-07-18 16:11:25 · 439 阅读 · 0 评论 -
LCA之倍增算法模板
#include #include #include #include using namespace std; const int maxx=500010; int be[maxx],ne[maxx*2],to[maxx*2],e=0; int deep[maxx],f[maxx][19],n,q,root,lim; bool p[maxx]; void add(int x,int y){ t原创 2017-07-17 15:05:39 · 495 阅读 · 1 评论 -
LCA之ST算法模板
例题: https://www.luogu.org/problem/show?pid=3379 #include #include #include #include using namespace std; const int maxx=1000010; //双向边数组要开点数的两倍 int n,q,root,be[maxx/2],to[maxx],ne[maxx],e=0; int d原创 2017-07-16 16:05:42 · 535 阅读 · 0 评论 -
LCA实现的三种不同的方法
LCA,最近公共祖先,实现有多种不同的方法,在树上的问题中有着广泛的应用,比如说树上的最短路之类。 LCA的实现方法有很多,比如RMQ、树链剖分等。今天来讲其中实现较为简单的三种算法:RMQ+时间戳、树上倍增(类似二分步长)、Tarjan算法(DFS+并查集)。 【RMQ+时间戳】 什么是时间戳?时间戳,就是被访问到的一个次序。比如说我们首先对一棵树进行深搜,在深搜中访问的相应次转载 2017-07-16 09:12:38 · 668 阅读 · 0 评论 -
LCA之tarjan模板
#include #include #include #include #include using namespace std; const int maxx=500010; int be[maxx],ne[maxx*2],to[maxx*2],e=0; int bee[maxx],nee[maxx*2],too[maxx*2],w[maxx*2],ee=0; int ans[maxx],fa[原创 2017-07-18 10:19:40 · 358 阅读 · 0 评论 -
NOIP2016天天爱跑步
题目在这 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做《天天爱跑步》的游戏。«天天爱跑步»是一个养成类游戏,需要玩家每天按时上线,完成打卡任务。 这个游戏的地图可以看作一一棵包含 nnn个结点和 n−1n-1n−1条边的树, 每条边连接两个结点,且任意两个结点存在一条路径互相可达。树上结点编号为从111到nnn的连续正整数。 现在有mmm个玩家,第iii个玩家的起点为原创 2017-11-08 20:44:49 · 3840 阅读 · 0 评论
分享