E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
树上倍增)
Tree Queries(
树上倍增
lca求公共祖先)
题解:“
树上倍增
lca求公共祖先”,假如有两个节点a和b,b的深度大于a,那么b的公共祖先节点一定是a的祖先节点,当然a的祖先也是b的祖先;再假如有好多个节点,b的深度最大,要想所有点在一条线上
AIRBOYONE
·
2020-08-15 15:34
ACM算法
NOIP主要考查范围
小根堆)并查集和带权并查集哈希表高级数据结构(可选学)树状数组线段树各种其他树字符串和相关内容1.KMP2.各种操作函数图论(重点)最小生成树最短路次短路,K短路图的连通二分图匹配拓扑排序树(可选学)
树上倍增
2000xcm
·
2020-08-14 07:00
图论+数论
洛谷 P1081 [NOIP提高组 2012] 开车旅行(线段树+离散化+
树上倍增
)
我用了40min左右的时间认真思考,科学探究,最后发现这就是个
树上倍增
。
AbEver
·
2020-08-14 04:07
非可持久化数据结构
倍增
GYM 101889I(mst+lca)
最小生成
树上倍增
询问裸的。
dengliaotu5386
·
2020-08-13 13:59
[点分树][二分] [BZOJ4317]Atm的树 && [BZOJ2117][2010国家集训队]Crash的旅游计划 &&[BZOJ2051]A Problem For Fun
题意求一棵树上,以每个点为起点的第k短路径双倍经验三倍经验啊对于每一个点,二分答案,那么只要判断与当前点距离小于等于二分出来的答案的点的个数是否等于k就行了复杂度nlog^3n,数据点应该不多……表示
树上倍增
常数太大了
LowestJN
·
2020-08-13 11:34
二分
&
三分
点分树
zzy主讲听课笔记
树上倍增
:完了,我们什么也不会,zzy要鄙视我们了。你们会快速幂吗?“不会”你们会求时间复杂
weixin_30481087
·
2020-08-12 18:37
BZOJ3551 Peaks 加强版 【kruskal重构树】【主席树】
题目链接:http://darkbzoj.tk/problem/3551题解:对原图求一遍kruskal重构树,考虑在重构
树上倍增
,求出深度最小的点权≤k\lek≤k的点(显然不是原图上的点),然后只需要求子树第
DenyTian
·
2020-08-11 17:07
【解题报告】
====并查集&差分
====主席树
LCA两种解法(RMQ+欧拉序、
树上倍增
)模板
这是洛谷的模板题:最近公共祖先LCA解释都在代码里:
树上倍增
#pragmaGCCoptimize(2)#includeusingnamespacestd;#defineIOSios::sync_with_stdio
9301∀
·
2020-08-11 10:26
数据结构
算法
【2020牛客多校】第九场 K The Flee Plan of Groundhog——BFS
所以可以把B为根,用
树上倍增
的方式来快速找到A的第t个祖先,即A开始的位置。接下来A和B会开始追击,考虑到达每一个点的情况,
NaruseShiroha
·
2020-08-10 18:36
#
树上倍增
ACM
#
图论
LCA实现的三种不同的方法
今天来讲其中实现较为简单的三种算法:RMQ+时间戳、
树上倍增
(类似二分步长)、Tarjan算法(DFS+并查集)。【RMQ+时间戳】什么是时间戳?时间戳,就是被访问到的一个次序。
WenDavidOI
·
2020-08-05 18:08
算法
【题解】牛客OI周赛1-提高组 B.树
树上倍增
+组合计数
链接:https://www.nowcoder.com/acm/contest/199/B来源:牛客网学习了大佬代码。对着这份代码看了一个多小时好像有点点明白。大概就是在这头选两个端点在那头选两个端点更新答案(说了等于没说)。选子树内那一头是不能在同一个子节点的子树内部选两个(会多占一些边),选子树外那头也得把共了边的部分减去,保证最后往上跳之后求出来的路径组合长度是在范围内的。#include#
不进清北不改名
·
2020-08-05 16:20
比赛
牛客网
倍增
组合数
Hdu-5875 Function(
树上倍增
st算法)
ProblemDescriptionTheshorter,thesimpler.Withthisproblem,youshouldbeconvincedofthistruth.YouaregivenanarrayAofNpostiveintegers,andMqueriesintheform(l,r).AfunctionF(l,r)(1≤l≤r≤N)isdefinedas:F(l,r)={AlF(
RJ28
·
2020-08-04 19:45
ACM
RMQ-ST算法
LeetCode第193场周赛(Weekly Contest 193)解题报告
Nice,兄滴们,第一次进入前100,可喜可贺,继续努力吧,奥力给第一题:前缀和第二题:排序+贪心第三题:二分第四题:
树上倍增
+DP详细题解如下。
Mikchy
·
2020-08-03 13:59
LeetCode刷题记录及题解
#
LeetCode比赛
【JLOI 2012】树(
树上倍增
)
传送门Solution:考虑倍增,维护up和w数组,up[i][j]代表i节点向上跳2^j能到达的节点,w[i][j]代表i节点及其以上2^j的和,一遍dfs,常规倍增处理即可。特别地,w[i][0]的值不是val[father],而是val[i]#include#defineN100005usingnamespacestd;intn,s,val[N],tot,first[N],depth[N],
Android66666
·
2020-08-02 15:54
0x63.图论 - 树的直径与最近公共祖先
Diameter)1.树形DP求树的直径2.两次BFS/DFS求树的直径1.POJ1985.CowMarathon(DFS求树的直径模板题)2.AcWing350.巡逻二、最近公共祖先(LCALCALCA)1.
树上倍增
法
繁凡さん
·
2020-08-02 14:17
【算法竞赛学习笔记】
#
LCA及其应用
树上倍增
的写法和应用(详细讲解,新手秒懂)
最近做了一些树上的练习题,发现倍增真的是一种处理树上问题的神奇、方便的方法。我以前一直打树链剖分打得多,但是学了倍增之后就再也不想打树链剖分了(当然有些题目不得不打)。倍增比起树链剖分,代码短,容易查错,时空复杂度也优很多(nlogn),只是功能有些欠缺。倍增的思想是二进制。首先开一个n×logn的数组,比如fa[n][logn],其中fa[i][j]表示i节点的第2^j个父亲是谁。然后,我们会发
Saramanda
·
2020-08-02 13:26
算法
BZOJ4568 [Scoi2016]幸运数字
树上倍增
+线性基
有一棵NN个节点的树,QQ个询问,每次询问树上从uu到vv的路径中能xorxor出的最大值。N≤20000,Q≤200000,N≤20000,Q≤200000,时限66s.询问一个数集的xorxor最大值显然线性基模板。预处理树上每个点到它第2k−12k−1个父亲的线性基,合并时暴力将一个线性基插入另一个,每次合并的复杂度是O(log2A)O(log2A).查询时同样暴力合并即可。需要用到线性基
Wolf_Reiser
·
2020-07-31 15:30
BZOJ
倍增LCA
线性基
线性基
CSP2019Day2T3 洛谷P5666:树的重心 (
树上倍增
)
题目传送门:https://www.luogu.org/problem/P5666很早以前就觉得,凡是考树的重心相关的题,到最后都变成一道模拟题。树的重心有许多优秀的性质,比如:结论一:记f(node)表示以node为根的最大子树的大小。从无根树上的任意一个点x出发,向相邻的点走一步。假设某个点y的f值比x的小,那么x向y走就相当于向树的重心移动了一步。假设不存在这样的y,那么x就是重心。假设存在
KsCla
·
2020-07-30 07:55
倍增
(
树上倍增
求LCA)
题目链接TimeLimit:2000/1000MS(Java/Others)MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):25284AcceptedSubmission(s):10051ProblemDescriptionTherearenhousesinthevillageandsomebidirectionalroadsconn
对你说的对
·
2020-07-29 19:53
数据结构
【upc】小Y的图 |
树上倍增
、最小生成树
问题B:小Y的图时间限制:1Sec内存限制:256MB提交状态题目描述小Y有一个n个点的无向图,图中的每个点从1到n标号。图中还有m条边,每条边有一个长度。小Y有Q个询问,每次询问两个点所有路径中,最长的边最小值是多少,若这两个点之间没有任何路径,输出-1。输入第一行三个整数n、m和Q。接下来m行每行三个整数x、y、z(1≤x,y≤n,1≤z≤1000000),表示有一条连接x和y长度为z的边。接
一只酷酷光儿( CoolGuang)
·
2020-07-29 06:11
upc经典题目及题解整理
倍增
树上倍增
最小生成树
树上倍增
题目描述A国有nn座城市,编号从11到nn,城市之间有mm条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有qq辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。输入格式第一行有两个用一个空格隔开的整数n,mn,m,表示AA国有nn座城市和mm条道路。接下来mm行每行三个整数x,y,zx,y,z,每两个整数之间用一个空格隔开,表示从xx号城市到yy号城市有一
dongdongdong122
·
2020-07-27 21:43
倍增
树链剖分学习笔记 By cellur925
近来总有人向我安利树剖求LCA,然鹅我还是最爱
树上倍增
。然鹅又发现近年一些题目(如天天爱跑步、运输计划等在树上进行操作的题目),我有把树转化为一条链求解的思路,但是不知道怎么实现。
weixin_30617737
·
2020-07-15 03:34
【Codeforces 666 E】—Forensic Examination(广义Sam+线段树合并)
传送门考虑对所有串建出广义SamSamSam用线段树合并维护每个节点在哪些串中出现以及最大出现次数对于每个询问,先找到rrr匹配到的节点然后
树上倍增
找到s[l,r]s[l,r]s[l,r]对应的节点在线段树上查询即可要特判这个串没有匹配的情况
Stargazer.
·
2020-07-11 20:29
线段树合并
后缀自动机Sam
对LCA、
树上倍增
、树链剖分(重链剖分&长链剖分)和LCT(Link-Cut Tree)的学习
LCAwhatisLCA&whatcanLCAdoLCA(LowestCommonAncestors),即最近公共祖先在一棵树上,两个节点的深度最浅的公共祖先就是LCALCALCA(自己可以是自己的祖先)很简单,我们可以快速地进入正题了下图中的树,444和555的LCALCALCA为2,111和333的LCALCALCA是1(1也算1的祖先)除了是直接求两点的LCALCALCA的模板题,没有题目会
路人黑的纸巾
·
2020-07-11 05:44
树上倍增
树链剖分
LCA
LCT
算法
数据结构
【十二省联考2019】【LOJ3049】【洛谷P5248】【BZOJ5496】字符串问题(SAM优化建图)(拓扑排序)
树上倍增
找到每个串的对应节点,用一个vector存下来。将SAM上每个节点拆
zxyoi_dreamer
·
2020-07-06 14:10
拓扑排序
后缀自动机SAM
板子合集,持续更新中...
树上倍增
求LCAconstintN=1e5+5;intlca[N][20];intdep[N];voiddfs(intnow,intf,intdepth){///初始时dfs(根节点,0,1);lca[
沙雕.
·
2020-07-06 05:00
模板
NOIP2013 货车运输 (最大生成树+
树上倍增
LCA)
死磕一道题,中间发现倍增还是掌握的不熟,而且深刻理解:SB错误毁一生,憋了近2个小时才调对,不过还好一遍AC省了更多的事,不然我一定会疯掉的。。。3287货车运输2013年NOIP全国联赛提高组时间限制:1s空间限制:128000KB题目等级:钻石Diamond题解查看运行结果题目描述DescriptionA国有n座城市,编号从1到n,城市之间有m条双向道路。每一条道路对车辆都有重量限制,简称限重
weixin_30908941
·
2020-07-05 22:32
[noip2013]货车运输(kruskal +
树上倍增
)
描述A国有n座城市,编号从1到n,城市之间有m条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有q辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。格式输入格式第一行有两个用一个空格隔开的整数n,m,表示A国有n座城市和m条道路。接下来m行每行3个整数x、y、z,每两个整数之间用一个空格隔开,表示从x号城市到y号城市有一条限重为z的道路。注意:x不等于y,两
weixin_30741653
·
2020-07-05 21:18
NOIP 2013 货车运输(
树上倍增
)
可以用树链剖分,不过这里由于只有查询没有修改,故学习了下代码量比较短的
树上倍增
。其实
树上倍增
就像区间问题上的RMQ,而树链剖分就像区间问题上的线段树(自认为比喻比较恰当)。
glq007
·
2020-07-05 17:48
树上倍增
4556: [Tjoi2016&Heoi2016]字符串
字符串题不会做先想能不能把字符串反过来把字符串反序,建立后缀自动机,利用线段树合并算出每个位置的right集二分答案,用
树上倍增
找到对应的节点,看是否有[a+mid-1,b]中的数在right集中#include
heheda_is_an_OIer
·
2020-07-04 17:45
(
树上倍增
+LCA+树上两点之间的距离)
Howfaraway?TimeLimit:2000/1000MS(Java/Others)MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):22960AcceptedSubmission(s):9073ProblemDescriptionTherearenhousesinthevillageandsomebidirectionalroa
橘子很酸
·
2020-07-04 10:59
图论
树上倍增
LCA
bzoj 4242: 水壶 最小生成树&
树上倍增
为了降低AC率这道题目我各种花样作死爆OJ,最后还是和标算改得差不多了。。。显然答案应该为建筑物构成的最小生成树中,两点间的最大路径;那么只要得到这棵最小生成树就可以用倍增在O(QlogN)的时间内得到答案了。因此关键是求最小生成树。注意到是平面图,因此考虑用bfs求最小生成树。直接以每个建筑为原点拓展显然不行,那么我们可以把每个建筑都加入队列一起拓展,那么对于一个点,一定会被其中的一个建筑第一次
lych_cys
·
2020-07-02 10:53
bzoj
【个人网络整理】NOIP / 省选 /NOI 知识点汇总
模拟图论图最短路(dijkstra、spfa、floyd),差分约束最小生成树(kruskal、prim)并查集(扩展域)拓扑排序二分图染色,*二分图匹配tarjan找scc、桥、割点,缩点*分数规划树
树上倍增
_Tham
·
2020-06-26 21:02
NOI
竞赛辅导
1月12号总结
维护最大值和环,用
树上倍增
就可以了。不过倍增一个地方容易写错,这里提出来一下:voidinit(){for(intj=1;(1<
South-twilight
·
2020-06-25 10:12
拓扑排序
随笔
总结
Noip知识点体系
模拟图论图最短路(dijkstra、spfa、floyd),差分约束最小生成树(kruskal、prim)并查集(扩展域)拓扑排序二分图染色,*二分图匹配tarjan找scc、桥、割点,缩点*分数规划树
树上倍增
I_O_fly
·
2020-06-20 22:55
信息学奥赛
LOJ3049 「十二省联考 2019」字符串问题
2)\)明显要优化连边,这里给出两种解法:SAM优化建边:这里要前缀关系,我们反向建SAM将其变成后缀关系对于每个串\([l,r]\),我们先找到\(r\)结尾的前缀在SAM上的位置,通过Parent
树上倍增
找到
Darknesses
·
2020-06-11 19:00
Luogu P5284 [十二省联考2019]字符串问题
然后对于给定的子串\(s_{l,r}\),parent
树上倍增
找到它在SAM中的出现位置,然后把这个子串挂在SAM的这个点上。注意到S
Shiina_Mashiro
·
2020-02-18 19:00
复习计划
*分数规划【NOIP提高组可能考点】(2).树1.
树上倍增
(LCA)2.树的直径、树的重心3.dfs序4.*树链剖分二、
qwert_zxn
·
2019-10-21 13:00
树上倍增
求解LCA 模板
//详解见https://www.cnblogs.com/zwfymqz/p/7795299.html//博主:自为风月马前卒https://www.cnblogs.com/zwfymqz///洛谷P3379最近公共祖先链接https://www.luogu.org/problem/P33791#include2#include3#include4#include5#include6usingna
pupil0
·
2019-09-27 23:00
LCA
树上倍增
算法
求LCA的算法——
树上倍增
例题:https://www.luogu.org/problem/P3379算法:首先我们能想出一种暴力算法:先把深度高的点跳到和深度低的点的同一层,然后他们俩一起往上跳,如果两个点相遇了
louis_110
·
2019-09-05 21:00
【NOIP2016提高组 day1】天天爱跑步
分析这道题思维程度实在高(反正蒟蒻在考场上打不出来orz)本不该是第二题的难度QWQ运用LCA+桶+树上差分对于当前点x,找出对它所有有贡献的点(是起点,并且能够在w[i]时间到达i点)先用
树上倍增
/Tarjan
Trilarflagz
·
2019-07-18 19:44
NOIP2016提高组
HDU2586(LCA
树上倍增
模板)
题意:给你一棵树树上任意两节点有且仅有一条路径可以到达,问求任意两节点间的距离题解:LCA
树上倍增
o#include#include#include#include#include#include#includeusingnamespacestd
不楸
·
2018-12-04 21:59
图论
(LCA Tarjan/
树上倍增
)
HDU2586题目:问任意两个点之间的最短路径长。如果用Tarjan做的话,那么用LCA算出最近公共祖先lca,长度就是dis[u]+dis[v]-2*dis[lca]#include#include#include#include#include#include#defineeps1e-8#definememset(a,v)memset(a,v,sizeof(a))usingnamespaces
语海与冰
·
2018-11-12 20:25
数据结构
图论
倍增求LCA模板
那么,我们就使用另一种方法,
树上倍增
法:我们设表示的倍祖先,那么很容易知道,就是当前节点的父亲(记住,当前节点可以代表当前深度的所有节点
guoyangfan_
·
2018-08-29 21:31
算法
HDU4822 Tri-war
树上倍增
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4822题目大意给定一棵树,和树上节点AA、BB、CC,若节点XX到节点AA的距离严格小于到BB、CC的距离,那么称XX被AA占有。有若干询问,每次给定一组AA、BB、CC,问各占领的节点数。问题分析若此题三个点减为两个点AA、BB,那么题目应该不难,我们平分A−>BA−>B的路径,分下奇偶,一半归AA
chy528574785
·
2018-08-05 16:39
树上倍增
倍增
博文索引
学OI有一年多了,学到了不少东西,也写了很多笔记,但是分类太乱,平时很难找,就整理一下吧数据结构
树上倍增
求LCA及例题splay详解(一)splay详解(二)splay详解(三)树链剖分详解浅谈线段树中加与乘标记的下放单调栈小结浅谈
自为风月马前卒
·
2018-07-20 07:00
Codeforces-983E (Round483 Div1) NN country
树上倍增
+树状数组
大意:有一棵树,有m条线路,给出q个询问u->v最少通过几条线路到达。解法:贪心求u和v到lca最少跳几次,然后判最后一次是否通过同一条线路到达。通过倍增法到达logN级别,最后的特判是用树状数组达到logN级别。对于每一个节点,其子树代表的区间为dfn[v]到dfn[v]+sz[v],对于需要特判的一组(u,v),在dfs到u的时候把起点为u的路的终点+1,相当于有一条路从u戳到某一个区间(即某
Desico
·
2018-05-22 10:49
ACM学习
【codeforces666E】Forensic Examination 广义后缀自动机+
树上倍增
+线段树合并
题目描述给出$S$串和$m$个$T_i$串,$q$次询问,每次询问给出$l$、$r$、$x$、$y$,求$S_{x...y}$在$T_l,T_{l+1},...,T_r$中的哪一个里出现次数最多,输出出现次数最多的串编号(如果有多个则输出编号最小的)以及相应出现次数。$|S|,q\le5\times10^5$,$\sum\limits_{i=1}^m|T_i|\le5\times10^4$。题解广
GXZlegend
·
2018-04-04 20:00
【模板】最近公共祖先(
树上倍增
)
完整部分点这里有N种办法可以解决LCA问题,这里我们只讲一种,用
树上倍增
的方法来实现LCA。在没有学习倍增写LCA之前,你是怎么样求LCA的呢?
Nekroz_
·
2018-03-22 13:28
LCA
倍增法
树链剖分求LCA
树链剖分深夜写博客……LCA的问题是可以有很多方法解出来的了,比如Tarjan,或者转化成ST表的RMQ问题,或者在
树上倍增
跳Ancestors数组Blablabla……。
Jerry_wang119
·
2018-02-14 00:30
LCA
树链剖分
上一页
1
2
3
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他