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
343D
树链剖分模板题(CodeForces -
343D
Water Tree )
题目链接树剖本蒻苟一知没敢学,最后集训题目集出了这个题目,所以以此题学一下。学懂后觉得不难,本人理解树链剖分本质上其实还是线段树,只不过通过对轻重链的划分,让树上节点连续化,以保留树上信息。从而使对树上链状的节点的修改连续化,使区间维护成为可能。可以去大佬博客学一下。#include#include#include#include#include#includeusingnamespacestd;
KalznAsawind
·
2020-08-13 17:08
数据结构
【CodeForces】
343D
Water tree (线段树好题!还未弄懂)
/*此题的方法除了用线段树求子树,通过标记父亲,更新儿子的方法,来更新祖先,学习了。对于建树的方法由于并没有说明父亲与儿子的顺序,所以需要通过两次添加。并且pre变量可以获得父亲的位置,还未弄懂!*/#define_CRT_SECURE_NO_WARNINGS#include#include#include#includeusingnamespacestd;#defineMAX500005#def
jason_star
·
2020-07-30 01:34
线段树
ACM_CF
寒假狂练
CodeForces -
343D
Water Tree(树链剖分+线段树)
题目链接:点击查看题目大意:给出一棵树,然后给出m次操作,每次操作分为三种:1v:将v及其子树全部变为12v:将v及其祖先全部变为03v:查询点v的值题目分析:树链剖分模板题,今下午刚做了一个比较难的,再回头看一下这个题,瞬间感觉简单好多了,为什么要挂着个题呢?为了提醒自己:树链剖分后,线段树的建树、查询、访问用的都是全新的编号!!!!这个样例也是坑人,样例中的5个点,剖分之后,还是对应着他们本身
Frozen_Guardian
·
2020-07-29 23:09
树链剖分
线段树
CodeForces -
343D
Water Tree(dfs序+线段树)
水一般的树,水一般的题MadscientistMikehasconstructedarootedtree,whichconsistsofnvertices.Eachvertexisareservoirwhichcanbeeitheremptyorfilledwithwater.Theverticesofthetreearenumberedfrom1tonwiththerootatvertex1.F
From now on...
·
2020-07-29 23:33
dfs序
Water Tree CodeForces -
343D
(dfs序+线段树)
MadscientistMikehasconstructedarootedtree,whichconsistsofnvertices.Eachvertexisareservoirwhichcanbeeitheremptyorfilledwithwater.Theverticesofthetreearenumberedfrom1tonwiththerootatvertex1.Foreachverte
untilyouydc
·
2020-07-29 23:30
线段树
Water Tree CodeForces -
343D
(dfs序列+线段树 模板)
D.WaterTreetimelimitpertest4secondsmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputMadscientistMikehasconstructedarootedtree,whichconsistsofnvertices.Eachvertexisareservoirwhichcan
丶先森
·
2020-07-29 22:27
ACM
线段树
模板题
CodeForces -
343D
Water Tree 树链剖分+线段树+dfs序
题目链接:点击查看题意:n个节点,原先都是空的,1,x让x的所有孩子包括x都变成满的,2,x让x的所有父辈加上x都变成空的,3,x询问x这个节点是满的还是空的,满的输出1,空的输出0题解:对应1操作,我们dfs序一下即可,对于2操作我们用树链剖分来解决,然后直接查询即可#includeusingnamespacestd;typedeflonglongll;constintN=5e5+10;stru
mmk27
·
2020-07-29 21:47
线段树
树链剖分
CodeForces -
343D
Water Tree (DFS序+线段树)
题目链接题意:现在有一棵以1为根节点的树,每个节点有一个水池,现在有三种操作。操作一:将v节点灌满水,然后他的所有子节点也将灌满水。操作二:将v节点的水抽干,然后他的所有父节点的水也将被抽干。操作三:查询某一个节点是否有水。题解:这个题看数据肯定暴力不可行,现在我们先DFS序将树结构转化成线性结构,然后对子节点的操作就直接转化成了线段树的区间操作,现在灌满水的操作已经解决了。但是抽水是对父节点操作
SpongeBob_Y
·
2020-07-29 14:56
数据结构
线段树
DFS序
code forces
343D
树链剖分
第一次没有用模板写树链剖分,感觉爽爽的。‘题意:根节点为1的树上有三种操作:1.将u和它的所有孩子节点置1;2.将u和它的所有祖先置0;3.查询u节点是0还是1思路:一操作相当于将u和它的子节点这个区间所有的值进行更新,在代码中显示为[id[u],R[u]]。二操作相当于更新1到u的这条链上的节点的值,不过不一定在一个连续的区间内,所以需要树链剖分,分成很多连续的子区间,进行剖分。3,直接查询简单
Lazines_by
·
2020-07-15 10:10
树链剖分
Water Tree CodeForces -
343D
(树链剖分+线段树)
MadscientistMikehasconstructedarootedtree,whichconsistsofnvertices.Eachvertexisareservoirwhichcanbeeitheremptyorfilledwithwater.Theverticesofthetreearenumberedfrom1tonwiththerootatvertex1.Foreachverte
starlet_kiss
·
2020-07-14 23:24
CodeForces
343D
(树链剖分+线段树)
MadscientistMikehasconstructedarootedtree,whichconsistsofnvertices.Eachvertexisareservoirwhichcanbeeitheremptyorfilledwithwater.Theverticesofthetreearenumberedfrom1tonwiththerootatvertex1.Foreachverte
剪云 者
·
2020-07-14 02:33
数据结构
线段树
树链剖分
CodeForces
343D
Water Tree dfs序 + 线段树
题目:http://codeforces.com/problemset/problem/343/D题意:给定一个树,树上有n个点,每个点是一个蓄水池,初始全为空。首先输入一个n,然后输入n-1行,每行两个点,代表两点之间有边,然后输入一个m,接下来m行操作,操作有3种:1a,把a及a的所有子孙注水。2a,把a及a的所有祖先放水。3a,询问a点有没有水,有输出1,否则0思路:首先dfs扫一遍,记录每
霜刃未曾试
·
2016-05-24 12:58
线段树
Codeforces
343D
Water Tree 题解&代码
其实是树剖QwQ不过个人感觉和线段树还是很像的…所以树剖的本质大约就是dfs序+线段树?in[]记录节点的节点的dfs编号out[]记录节点的控制范围(in[i] #include #include #include #definelson(oedge[maxn]; intn,q,a[maxn],b[maxn],in[maxn],out[maxn],pos[maxn],c,v,tot; booll
Rainbow6174
·
2015-12-09 17:00
C++
线段树
DFS
codeforces
树链剖分
【Codeforces
343D
】Water Tree dfs序建树+线段树
D.WaterTreetimelimitpertest4secondsmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputMadscientistMikehasconstructedarootedtree,whichconsistsofnvertices.Eachvertexisareservoirwhichcan
ALPS233
·
2015-12-01 19:50
Segmet
Tree
【Codeforces
343D
】Water Tree dfs序建树+线段树
D.WaterTreetimelimitpertest4secondsmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputMadscientistMikehasconstructedarootedtree,whichconsistsofnvertices.Eachvertexisareservoirwhichcan
ALPS233
·
2015-12-01 19:00
DFS
codeforces
CodeForces
343D
线段树维护dfs序
给定一棵树,初始时树为空 操作1,往某个结点注水,那么该结点的子树都注满了水 操作2,将某个结点的水放空,那么该结点的父亲的水也就放空了 操作3,询问某个点是否有水 我们将树进行dfs, 生成in[u], 访问结点u的时间戳,out[u],离开结点u的时间戳 每个结点的in值对应在线段树中的区间的一点 那么对于操作1, 只要将区间[in[u],out[u]] 的值都改为
·
2015-10-31 09:09
codeforces
xtu summer individual 6 F - Water Tree
Original ID:
343D
64-bit integer IO format: %I64d Ja
·
2015-10-31 08:23
water
CodeForces
343D
Water Tree(dfs序+线段树区间更新)
题意:给定一棵树,以及定义了3个操作1、把v点及其子树灌上水2、把v点及v到根的路径去掉水3、询问v点是否有水解析:先对这棵树做一遍dfs序,把树转成dfs_clock,这样每个点就可以对其子树进行区间更新。那么对于点v出现的时间in[v]和消失的时间out[v],一定会把v子树下所有节点都夹在[in[v],out[v]]之中。对于操作1,就是把[in[v],out[v]]改成1对于操作2和3,把
HelloWorld10086
·
2015-09-08 21:00
codeforces
343D
Codeforces
343D
Water Tree dfs序+线段树
题目链接:http://codeforces.com/contest/343/problem/D题意:给定一棵树(给定图一定是树)1、把v点及其子树灌上水2、把v点及v到根的路径去掉水3、询问v点是否有水思路:dfs序(不是欧拉序列)把树转成dfs_clock那么对于点v出现的时间in[v]和消失的时间out[v],一定会把v子树下所有节点都夹在[in[v],out[v]]之中,则操作1就是把[i
qq574857122
·
2014-06-21 11:00
Codeforces
343D
Water Tree
题意:一棵树有N个节点,有三种操作(1)“1v",表示将以点v为根节点的子树全部赋值为1,(2)"2v",表示将点v以及点v的所有祖先节点全部赋值为0,(3)"3v",表示查询点v的值。将树型转线性之后,我用了两棵线段树去维护这两种操作,明显可知的是,点v的子树里有一个点进行了操作(2),并且点v进行操作(1)(如果有)的时间早于操作2,那么点v的值就为0,在线段树里维护好每个操作的时间就可以了。
shiqi_614
·
2013-09-27 16:00
上一页
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
其他