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
BZOJ4034
[题解]
bzoj4034
HAOI2015 树上操作
Description有一棵点数为N的树,以点1为根,且树点有边权。然后有M个操作,分为三种:操作1:把某个节点x的点权增加a。操作2:把某个节点x为根的子树中所有点的点权都增加a。操作3:询问某个节点x到根的路径中所有点的点权和。Input第一行包含两个整数N,M。表示点数和操作数。接下来一行N个整数,表示树中节点的初始权值。接下来N-1行每行三个正整数fr,to,表示该树中存在一条边(fr,t
Saramanda
·
2020-09-14 06:14
数据结构
线段树
树链剖分
BZOJ4034
: [HAOI2015]树上操作(洛谷P3178)
树链剖分BZOJ题目传送门洛谷题目传送门最基础的树剖。区间修改线段树直接打Tag。注意开longlong(1e6(M)*1e6(a)=1e12)。代码:#include#include#include#include#defineN100005usingnamespacestd;typedeflonglongLL;structtree{intl,r;LLsum,tg;}t[N*4];structe
forezxl
·
2020-08-23 01:05
BZOJ
洛谷
数据结构---树链剖分
蒟蒻zxl的Blog专栏
[HAOI2015]树上操作
bzoj4034
注意longlong注意数组大小辣鸡线段树大小!!!
Hiyoiria
·
2020-08-23 00:46
树
[
BZOJ4034
][HAOI2015]树上操作(树链剖分+线段树)
4034:[HAOI2015]树上操作TimeLimit:10SecMemoryLimit:256MBSubmit:6487Solved:2161[Submit][Status][Discuss]Description有一棵点数为N的树,以点1为根,且树点有边权。然后有M个操作,分为三种:操作1:把某个节点x的点权增加a。操作2:把某个节点x为根的子树中所有点的点权都增加a。操作3:询问某个节点x
Effervescence
·
2018-02-27 22:21
线段树
树链剖分
bzoj4034
: [HAOI2015]树上操作(树链剖分+线段树)
题目传送门水经验。解法:就写个树剖呗。然后用线段树维护一下呗。维护整一段的和。打个懒标记。代码实现:#include#include#include#include#include#include#includeusingnamespacestd;typedeflonglongll;structnode{intx,y,next;}a[210000];intlen,last[110000];void
Hanks_o
·
2017-10-30 11:14
树链剖分
线段树
BZOJ
bzoj4034
[HAOI2015]树上操作(树链剖分)
子树修改,通过dfn序可以变成区间修改。然后就是裸题了。#include#include#definelllonglong#defineN100010intn,a[N],m,num=0,h[N],dep[N],size[N],son[N],fa[N],top[N],in[N],out[N],dfn=0,w[N];structedge{intto,next;}data[N'9'){if(ch=='-
Icefox_zhx
·
2017-09-08 09:28
bzoj
树链剖分
【
bzoj4034
】树上操作 树链剖分+线段树
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=4034【题解】用树剖来做的话,做法很显然,比模板题还简单。不过,据说可以用dfs序搞一搞。#include#include#include#include#include#include#includeusingnamespacestd;typedeflonglongll;#defineFI
chty_syq
·
2017-02-13 10:57
bzoj
线段树
树链剖分
[
BZOJ4034
][HAOI2015]T2 树链剖分+dfs序
常规题,比较特殊的操作是修改以x为根的子树的所有节点我们知道,这颗子树的dfs序一定是连续的,所以我们只需要对每个节点记录一下,最大的dfs序即可因为树剖要dfs,所以我们直接在第二次dfs时记录,但需要注意的是,因为我们最先对重链的节点编号,所以dfs时也必须先dfs重链我采取的办法是直接加边,因为边表保证了最后加的边最先扩展,或者也可以直接记录一下重边连的点(因为longlongWA了一次,树
Cabinfever
·
2016-11-02 22:00
bzoj
数据结构——树链剖分
BZOJ4034
[HAOI2015]T2 题解&代码
题意:有一棵有N个节点的树,以节点1为根,且点上有权。有M个操作,分为三种:操作1把节点x的点权增加a操作2把以节点x为根的树中所有点的点权都增加a操作3求节点x到根的路径中所有点的点权和分析:操作1和操作2本质上是没有区别的,区间修改和单点修改显然可以合并,求dfs序后线段树区间维护就可以了操作3是涉及路径的查询,和树剖很类似,但是比树剖简单很多【比如我求的deep完全没有用2333333】,按
Rainbow6174
·
2016-06-01 21:05
BZOJ
线段树
树链剖分
BZOJ学习记录
BZOJ4034
[HAOI2015]T2 题解&代码
题意:有一棵有N个节点的树,以节点1为根,且点上有权。有M个操作,分为三种:操作1把节点x的点权增加a操作2把以节点x为根的树中所有点的点权都增加a操作3求节点x到根的路径中所有点的点权和分析:操作1和操作2本质上是没有区别的,区间修改和单点修改显然可以合并,求dfs序后线段树区间维护就可以了操作3是涉及路径的查询,和树剖很类似,但是比树剖简单很多【比如我求的deep完全没有用2333333】,按
Rainbow6174
·
2016-06-01 21:00
BZOJ4034
[HAOI2015]T2 题解&代码
题意:有一棵有N个节点的树,以节点1为根,且点上有权。有M个操作,分为三种:操作1把节点x的点权增加a操作2把以节点x为根的树中所有点的点权都增加a操作3求节点x到根的路径中所有点的点权和分析:操作1和操作2本质上是没有区别的,区间修改和单点修改显然可以合并,求dfs序后线段树区间维护就可以了操作3是涉及路径的查询,和树剖很类似,但是比树剖简单很多【比如我求的deep完全没有用2333333】,按
Rainbow6174
·
2016-06-01 21:00
BZOJ4034
——[HAOI2015]T2
1、题目大意:用一个数据结构支持树的点修改和子树修改、树上路径和2、分析:树链剖分裸题#include #include #include #include usingnamespacestd; #defineM1000000 #defineLLlonglong LLSize[M],value[M],Top[M],Fa[M],Height[M],num[M],left[M],right[M]; L
qzh_1430586275
·
2016-05-18 08:00
树链剖分
t2
bzoj
4034
HAOI2015
bzoj4034
T2 【树链剖分+线段树】
#include #include #include #include #include #include usingnamespacestd; constintN=200000+10; typedeflonglongll; struct { intl,r; llf,sum; }tree[4*N]; intg[N][2],top[N],fa[N],dep[N],son[N],sz[N],w[N]
xinag578
·
2016-05-09 12:00
BZOJ4034
HAOI2015 T2 线段树+DFS序
第一次知道了子树原来是用DFS序来维护,涨姿势了--。首先我们跑一边DFS序,每个点在入栈和出栈的时候分别记录一边,入栈编号为b[i],出栈标号为e[i],那么两次记录之间的所有的点就是该节点子树的DFS序,入栈为原值,出栈取负。然后就是用线段树来维护,询问1就是更新b[x]和e[x];询问2就是更新b[x]到e[x];询问3就是询问1到b[x]#include #include #include
WDZRMPCBIT
·
2016-04-26 23:00
【
BZOJ4034
】[HAOI2015]T2【树链剖分】
【题目链接】之前写的,忘了发上来了。裸树剖。/*FootprintsInTheBloodSoakedSnow*/ #include #include usingnamespacestd; typedeflonglongLL; constintmaxn=100005; intn,m,head[maxn],cnt,w[maxn],st[maxn],ed[maxn],size[maxn],top
BraketBN
·
2016-03-29 11:00
树链剖分
[
BZOJ4034
][HAOI2015]树上操作(链剖+dfs序)
题目描述传送门题解一上午就调些傻逼题,最近数据结构老是写挂心里很不爽。fye告诉我说多写写就不会错了。傻逼链剖+dfs序,但是后来全改成LL才过了。也不知道为什么。学姐说LL和int必须强转,否则会出错。代码#include#include#include#include#includeusingnamespacestd;#defineN100005#defineLLlonglongintn,m,
Clove_unique
·
2016-03-21 11:26
题解
省选
树链剖分
dfs序
[
BZOJ4034
][HAOI2015]树上操作(链剖+dfs序)
题目描述传送门题解一上午就调些傻逼题,最近数据结构老是写挂心里很不爽。fye告诉我说多写写就不会错了。傻逼链剖+dfs序,但是后来全改成LL才过了。也不知道为什么。学姐说LL和int必须强转,否则会出错。代码#include#include#include#include#includeusingnamespacestd;#defineN100005#defineLLlonglongintn,m,
Clove_unique
·
2016-03-21 11:26
题解
省选
树链剖分
dfs序
【
BZOJ4034
】T2,树链剖分练习
传送门写在前面:大晚上写题解,明天上午去看电影,可以的~~思路:比较裸的树链剖分,比起普通的链剖,这里加了一步对子树(包括自己)的权值修改,这其实很简单,因为我们dfs时任一个子树的区间[L,R]在线段树上都是连续的,而且显然L记录该子树根的权值,R记录子树最右边的点的权值,可以对整棵子树dfs后得到,接下来就是打上lazy标记的线段树操作了注意:计算答案一定要开longlong,而且有些中间步骤
xym_CSDN
·
2016-03-18 23:00
bzoj4034
T2 树链剖分&树状数组
一种明显的做法是直接树链剖分然后用区间修改区间查询树状数组(我写的这种)或者线段树来维护吧。。这样做是O(Nlog^2N)的。 但是还可以做到O(NlogN)。首先可以发现它是单点链上查询,那么可以考虑用差分的思想,或者考虑将单点修改直接变成区间修改然后就只用单点简单查询了。 首先考虑单点修改,这种操作只对它所在的子树中的所有点的答案有影响,也就是所在的子树中每一个点的答案+a
lych_cys
·
2016-03-14 19:00
线段树
树状数组
树链剖分
贴一下WC总结里提到的那道裸题吧。。。
[
bzoj4034
][HAOI2015]T2试题描述有一棵点数为N的树,以点1为根,且树点有边权。然后有M个操作,分为三种:操作1:把某个节点x的点权增加a。
xiao_ju_ruo_xjr
·
2016-02-06 12:00
bzoj4034
Description 有一棵点数为N的树,以点1为根,且树点有边权。然后有M个操作,分为三种:操作1:把某个节点x的点权增加a。操作2:把某个节点x为根的子树中所有点的点权都增加a。操作3:询问某个节点x到根的路径中所有点的点权和。Input 第一行包含两个整数N,M。表示点数和操作数。接下来一行N个整数,表示树中节点的初始权值。接下来N-1行每行三个正整数fr,to,表示该树中存在一条边(fr
nul
·
2016-01-30 16:00
[
BZOJ4034
] [HAOI2015]T2
传送门http://www.lydsy.com/JudgeOnline/problem.php?id=4034题目大意对于一棵树支持1:单点修改2:子树修改3:单点到根的路径查询题解ydc大爷的题解http://ydc.blog.uoj.ac/blog/336dfs序+线段树对于操作1,相当于对子树都加上同一个值对于操作2,相当于对于v的子树都加上(depu−depv+1)∗x,我们把它再拆一下就
slongle_amazing
·
2015-11-13 22:00
树链剖分||dfs序 各种题
【
bzoj4034
】[HAOI2015]T2 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。
·
2015-10-31 08:08
DFS
【HAOI2015】【
BZOJ4034
】树上操作T2
Description有一棵点数为N的树,以点1为根,且树点有边权。然后有M个操作,分为三种:操作1:把某个节点x的点权增加a。操作2:把某个节点x为根的子树中所有点的点权都增加a。操作3:询问某个节点x到根的路径中所有点的点权和。Input第一行包含两个整数N,M。表示点数和操作数。接下来一行N个整数,表示树中节点的初始权值。接下来N-1行每行三个正整数fr,to,表示该树中存在一条边(fr,t
CreationAugust
·
2015-10-18 10:29
随便搞搞
模板题库
bzoj4034
: [HAOI2015]T2
4034:[HAOI2015]T2TimeLimit:10Sec MemoryLimit:256MBSubmit:921 Solved:313[Submit][Status][Discuss]Description 有一棵点数为N的树,以点1为根,且树点有边权。然后有M个操作,分为三种:操作1:把某个节点x的点权增加a。操作2:把某个节点x为根的子树中所有点的点权都增加a。操作3:询问某个节点
acm_fighting
·
2015-10-08 19:00
BZOJ4034
【树链剖分】【线段树】
/*Iwillwaitforyou*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #definemake(a,b)make_pair(a,b) #definefifirst #define
Lethelody
·
2015-05-03 18: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
其他