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
LNOI2014
[BZOJ3626][
LNOI2014
]LCA(离线+链剖)
======这里放传送门======题解感觉这题思路还是比较神的。。对于一个点u,我们要查它跟某个给定点z的LCA的深度,那么如果我们把u这个点到根节点的路径全都打上+1的标记,那么z到根的路径上的标记数目就是u和z的LCA的深度。这个东西画一画就感觉比较科学了。。如果是对于两个点u和v要求跟z的LCA的深度,那就把u和v都打上到根的一串标记然后查z到根的标记个数就可以了。。。那我们可以离线询问,
FromATP
·
2023-10-31 22:57
BZOJ
不知道加什么形容词的树链剖分
BZOJ
LNOI
树链剖分
离线处理
LCA
[
LNOI2014
]LCA——树链剖分——多点LCA深度和问题
模板:题目链接进阶:题目链接题意:给定一棵nnn个点的树。qqq次询问,每次询问给出三个值l,r,zl,r,zl,r,z,要求出∑i=lrdep(LCA(i,z))\sum_{i=l}^{r}dep(LCA(i,z))∑i=lrdep(LCA(i,z))。(nusingnamespacestd;typedeflonglongll;constllmod=201314;typedefpairP;llt
Zimba_
·
2020-08-09 15:56
树链剖分
[bzoj 3626]
LNOI2014
LCA
神题!虽然想到离线,但是还是只会随机数据的做法。。。。有一个比较有意思的结论:把点i到根的所有点权值设为1,其他点为0,此时j到根的所有点权和即为dep[LCA(i,j)]不难发现,这个方法满足加法性质。把询问查分,从1到n处理每个点,将其到根的权值+1,询问只要看这个点到根的权值和就是LCA的深度和了!LCT维护即可#include#include#includeusingnamespacest
Zeyu_King
·
2020-07-04 09:36
BZOJ
日常
LCT
树上的好题
[
LNOI2014
]LCA给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。
神之右大臣
·
2019-11-05 19:00
bzoj3626: [
LNOI2014
]LCA(离线处理+树链剖分)
题目传送门。解法:对于任意一个询问:lrz对于任意一个点来说。他对答案的贡献实际上是LCA(i,z)的深度。也就是lca到根的点数。那么我们可以每个点到根的路径都加1。然后询问下z到根的路径上的答案总和其实就是答案啊。显然可以分成两个区间,一个1到l-1,一个1到r。l到r的答案用两个答案相减,正确性显然。那么离线处理。把每个操作都分成两个区间。然后分别按照右端点排序。把每个点到路径的点都加1。然
Hanks_o
·
2018-03-20 16:38
树链剖分
BZOJ
[BZOJ3626][
LNOI2014
]LCA 树链剖分
太神啦!http://blog.csdn.net/popoqqq/article/details/38823457/**************************************************************Problem:3626User:di4CoveRyLanguage:C++Result:AcceptedTime:3264msMemory:16944kb**
HbFS-
·
2017-02-03 16:38
树链剖分
[bzoj3626][
LNOI2014
]LCA
Description给出一棵树,q次询问,每次询问∑i=lrdeep(lca(i,z))n,q #include #include #definefo(i,a,b)for(inti=a;ik)k=size[t[i]],son[x]=t[i]; } } voidmake(intx,inty){ w[x]=++tot;top[x]=y; if(!son[x])return; make(son[x],
alan_cty
·
2016-06-12 21:00
LCA
离线
树链剖分
BZOJ3626
LNOI2014
[BZOJ3626][
LNOI2014
]LCA(离线+差分+树链剖分)
题目描述传送门题解首先把询问lr拆成两个询问。利用差分的思想,每次查询区间[1,i]与zlca的和,然后用r的值减去l-1的值就是答案。查询区间[1,i]与zlca的和,可以将1-i所有的点到根的路径上的点都+1,然后查询z到根的路径上所有点的权值和即为答案。其实这就是深度的表示。那么离线询问之后排序,时间复杂度为O(nlogn)代码#include#include#include#include
Clove_unique
·
2016-05-12 17:56
题解
省选
树链剖分
差分
[BZOJ3626][
LNOI2014
]LCA(离线+差分+树链剖分)
题目描述传送门题解首先把询问lr拆成两个询问。利用差分的思想,每次查询区间[1,i]与zlca的和,然后用r的值减去l-1的值就是答案。查询区间[1,i]与zlca的和,可以将1-i所有的点到根的路径上的点都+1,然后查询z到根的路径上所有点的权值和即为答案。其实这就是深度的表示。那么离线询问之后排序,时间复杂度为O(nlogn)代码#include#include#include#include
Clove_unique
·
2016-05-12 17:56
题解
省选
树链剖分
差分
[BZOJ3626][
LNOI2014
]LCA(离线+差分+树链剖分)
题目描述传送门题解首先把询问lr拆成两个询问。利用差分的思想,每次查询区间[1,i]与zlca的和,然后用r的值减去l-1的值就是答案。查询区间[1,i]与zlca的和,可以将1-i所有的点到根的路径上的点都+1,然后查询z到根的路径上所有点的权值和即为答案。其实这就是深度的表示。那么离线询问之后排序,时间复杂度为O(nlogn)代码#include #include #include #incl
Clove_unique
·
2016-05-12 17:00
离线
树链剖分
差分
bzoj
LNOI
bzoj 3626: [
LNOI2014
]LCA(树链剖分+离线+差分)
3626:[
LNOI2014
]LCATimeLimit:10SecMemoryLimit:128MBSubmit:1512Solved:563[Submit][Status][Discuss]Description
clover_hxy
·
2016-05-12 14:34
树链剖分
差分
bzoj 3626: [
LNOI2014
]LCA(树链剖分+离线+差分)
3626:[
LNOI2014
]LCATimeLimit: 10Sec MemoryLimit: 128MBSubmit: 1512 Solved: 563[Submit][Status][Discuss
clover_hxy
·
2016-05-12 14:00
BZOJ3626: [
LNOI2014
]LCA
题目大意:给一棵树,q个询问,每次询问一个区间内的点与一个点的所有LCA的深度之和很神的一道题啊...首先对于每组询问,我们可以把这个区间内每个点到根的路径都+1,然后求被询问的点到根的路径和,就是这个询问的答案然后我们可以把每组询问拆成两个,变成ans[R]-ans[L-1]然后就可以离线,把0~n-1一个一个往里加,每次把它到根的路径+1,然后查询对应的那些询问就可以了#include #in
commonc
·
2016-05-11 07:00
树链剖分
bzoj
离线处理
省选
BZOJ3626
LNOI2014
LCA 树链剖分+线段树
gconeice的题解:显然,暴力求解的复杂度是无法承受的。考虑这样的一种暴力,我们把z到根上的点全部打标记,对于l到r之间的点,向上搜索到第一个有标记的点求出它的深度统计答案。观察到,深度其实就是上面有几个已标记了的点(包括自身)。所以,我们不妨把z到根的路径上的点全部+1,对于l到r之间的点询问他们到根路径上的点权和。仔细观察上面的暴力不难发现,实际上这个操作具有叠加性,且可逆。也就是说我们可
WDZRMPCBIT
·
2016-04-30 00:00
bzoj3626: [
LNOI2014
]LCA (树链剖分+离线线段树)
Description给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。有q次询问,每次询问给出lrz,求sigma_{l#include#include#include#include#include#include#include#include#include#inclu
Herumw
·
2016-04-25 15:44
线段树
树链剖分
bzoj3626: [
LNOI2014
]LCA (树链剖分+离线线段树)
Description给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。有q次询问,每次询问给出lrz,求sigma_{l #include #include #include #include #include #include #include #include #incl
Kirito_Acmer
·
2016-04-25 15:00
线段树
树链剖分
3626: [
LNOI2014
]LCA|动态树
这真是一道神题!!显然需要离线来解决,再就是用到了差分的思想以下是PoPoQQQ大爷复制gconeice的题解,说得非常详细,就不再赘述了显然,暴力求解的复杂度是无法承受的。考虑这样的一种暴力,我们把z到根上的点全部打标记,对于l到r之间的点,向上搜索到第一个有标记的点求出它的深度统计答案。观察到,深度其实就是上面有几个已标记了的点(包括自身)。所以,我们不妨把z到根的路径上的点全部+1,对于l到
ws_yzy
·
2016-03-08 08:00
动态树
[BZOJ3626] [
LNOI2014
]LCA
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=3626题目大意给定一棵树,询问∑bi=adep[lca(i,c)]题解ORZ我们先考虑可以怎么求两个点的lca的深度,我们对其中一个到根上的所有点都+1,然后查询另一个点到根的所有点权和即可然后对于本题的所有询问[L,R]都可以拆成[1,L−1]和[1,R]这样我们离线把查询排序,依次把1~n到
slongle_amazing
·
2016-02-20 18:00
bzoj 3626 [
LNOI2014
]LCA(离线处理+树链剖分,线段树)
3626:[
LNOI2014
]LCATimeLimit:10Sec MemoryLimit:128MBSubmit:1272 Solved:451[Submit][Status][Discuss]
hahalidaxin
·
2016-02-10 14:00
bzoj3626【
LNOI2014
】LCA
3626:[
LNOI2014
]LCATimeLimit: 10Sec MemoryLimit: 128MBSubmit: 1266 Solved: 448[Submit][Status][Discuss
AaronGZK
·
2016-02-06 11:00
线段树
树链剖分
bzoj
【BZOJ3626】【
LNOI2014
】LCA (树剖+离线)
Description给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。有q次询问,每次询问给出lrz,求sigma_{l 2#include 3#include 4#include 5#definep201314 6#defineMaxN50010 7#defin
Lukaluka
·
2016-01-14 19:00
BZOJ3626: [
LNOI2014
]LCA
想到离线之后就很裸了。。。我承认自己是SB 一开始还没想到。。。。还有。。今天每次提交都会忘了删文件。。。。。#include #include #include #include #include usingnamespacestd; charc; inlinevoidread(int&a) { a=0;doc=getchar();while(c'9'); while(c='0')a=(a>1
liutian429073576
·
2015-11-26 18:00
树链剖分
bzoj
BZOJ 3626: [
LNOI2014
]LCA( 树链剖分 + 离线 )
说多了都是泪啊...调了这么久.. 离线可以搞 , 树链剖分就OK了... ---------------------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<
·
2015-11-02 12:13
ZOJ
BZOJ3626 : [
LNOI2014
]LCA
求[l,r]内所有点与z的lca的深度之和 = 求z所有祖先子树中在[l,r]内的点的个数之和 由于数据不是随机的,所以祖先个数可能很大。 按编号分成$\sqrt{n}$块 设ans[i][j]表示第i块内所有点与j的lca的深度之和 计算ans[i][]时,把在[l,r]内所有点的cnt设为1,其它的设为0, 然后从下往上,父亲的cnt+=孩子
·
2015-10-31 16:34
ZOJ
[bzoj 3626]
LNOI2014
LCA
神题!虽然想到离线,但是还是只会随机数据的做法。。。。有一个比较有意思的结论:把点i到根的所有点权值设为1,其他点为0,此时j到根的所有点权和即为dep[LCA(i,j)]不难发现,这个方法满足加法性质。把询问查分,从1到n处理每个点,将其到根的权值+1,询问只要看这个点到根的权值和就是LCA的深度和了!LCT维护即可#include #include #include usingnamespa
Zeyu_King
·
2015-06-13 21:00
LCT
【BZOJ 3626】 [
LNOI2014
]LCA
3626:[
LNOI2014
]LCATimeLimit:10SecMemoryLimit:128MBSubmit:735Solved:250[Submit][Status][Discuss]Description
Regina8023
·
2015-04-19 16:00
BZOJ3626 [
LNOI2014
]LCA(树链剖分)
【题解】首先考虑任意两点u,v的LCA的deep:若将0到u路径上所有点标记,则deep[LCA(u,v)]等于从v上溯到的第一个被标记点的deep,而再往上的话一直到根,经过的点都是被标记点 由前缀和的思想,将0到u路径上所有点权值设为1,其他点权值为0,那么deep[LCA(u,v)]等于SUM(0到v路径上的点权和)再进一步想,deep[LCA(u1,v)]+deep[LCA(u2,v)]怎
cjk_cjk
·
2015-02-17 22:00
图论
LCA
树链剖分
bzoj
bzoj 3626: [
LNOI2014
]LCA
【题意】【题解】开始做这道题的时候抓住lca不放,想了一些不太优美的做法。优美的正解:考虑与z的lca是x的点:这时候z一定是x的一个后代,而这些点也都是x的一个后代且与z不属于一个x的子节点的枝上。x这个点对答案的贡献就是depth[x]*上述点的个数。显然“上述点”的个数应该是sum(fat[x])-sum(x),而这个数如果一直加到根的话是可以消掉的,,还是挺显然的,,然后……这不是煞笔题么
czysjr
·
2015-01-02 13:19
上一页
1
下一页
按字母分类:
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
其他