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
bzoj1095
bzoj1095
动态点分治先建出点分树,每个点上维护两个堆,s1,s2,分别表示子树中到点分树中父亲的所有长度,每个儿子s1的最大值,那么对于每个点答案就是s2的最大+次大,再维护一个s3保存这个。首先我们要搞一个带删除的堆,那么我们开两个堆就行了,一个保存元素,一个保存被删除的元素,每次一起弹出就行了然后是为什么要维护三个堆,每个点记录所有儿子的路径不行吗》这里我想了很长时间,其实很简单,因为记录路径的话有可能
weixin_30919429
·
2020-08-18 04:46
2019.01.10
bzoj1095
: [ZJOI2007]Hide 捉迷藏(动态点分治)
传送门蒟蒻真正意义上做的第一道动态点分治!题意:给一棵最开始所有点都是黑点的树,支持把点的颜色变成从黑/白色变成白/黑色,问当前状态树上两个最远黑点的距离。思路:首先考虑不带修改一次点分治怎么做的。显然对于每个树上的节点ppp可以对它的每一个儿子vvv维护一个静态的集合BvB_vBv表示vvv子树中所有点到ppp的距离,然后对于ppp这个点可以维护一个静态集合CpC_pCp来记录所有maxBvma
weixin_30455023
·
2020-08-18 04:21
bzoj1095
动态点分治
写在正文前的例行吐槽:我终于,终于,终于也是写过动态点分治的人了。。。加上动态dp和动态树是不是就可以集齐套装召唤神龙了呢。。(思考ing)动态点分治:你会碰到一类问题。。有多个修改询问之类的操作。。可以用一次点分治回答一次询问这时候我们可以把点分树建出来。。。点分树有一些性质:1.树高不超过log层。(显然吧orz。。。)2.在进行点分治时,套路就是从当前点出发向外扩展,直到碰到已经访问过的点为
_shivering_
·
2020-08-18 02:09
数据结构
【
BZOJ1095
】【ZJOI2007】捉迷藏 括号序列+线段树维护
原题链接1095:[ZJOI2007]Hide捉迷藏TimeLimit:40SecMemoryLimit:162MBSubmit:2109Solved:868[Submit][Status][Discuss]Description捉迷藏Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1
_傲寒
·
2020-08-18 00:38
bzoj1095
:Hide 捉迷藏(动态树分治)
我月考时一直在想动态树分治是个什么东西,直到看了这题题解才有点懂。题面题意:给出一棵黑白树,每次翻转一个点的颜色,或询问两个黑点间的最远距离。由于是点对问题,可以想点分治。先考虑问题的静态版本,怎么用点分治求最远两个黑点的距离。显然,对于一个重心,我们要知道每个连通块中,距离它最远的点的距离,前二大的加起来可以更新答案。根据点分治的划分过程,每个重心向它的次级重心连边,形成了一棵点分树。显然点分树
KKiseki
·
2020-08-18 00:12
树分治
bzoj1095
Hide 捉迷藏 括号序列&线段树
膜拜了岛娘的题解,woc真是太神了。。不过合并并没有细讲。。不过实际上还是很好理解的。实际上核心思想是,利用括号序列将两点间距离转化为了该两点间的括号序列化简以后的长度,这样就可以用线段树来维护区间最大子段和(并不是指通常的最大子段和)了。AC代码如下(略微一压到70行还算短吧。。):#include#include#include#defineinf1000000000#defineN30000
lych_cys
·
2020-08-17 23:44
bzoj
bzoj1095
线段树括号序列
题目分析首先%%%岛姐的讲解然后%%%hzwer的代码最后%%%树王的帮助好吧,写写我的感悟。括号序列与距离首先我们对于一棵美丽的树,可以生成一个先序遍历的括号序列,左括号表示到达该店,右括号表示离开该点。例如下图这棵美丽的树,可以生成一个这样的序列:(1(2(3)(5))(4)(6(7)))这个序列有什么用呢?两个点之间的距离,就是它们之间括号序列去掉可以匹配的括号后的括号数。这是为什么呢?是因
litble
·
2020-08-17 23:36
数据结构
「
BZOJ1095
」「ZJOI2007」Hide 捉迷藏
DescriptionJiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N−1条双向走廊组成,这N−1条走廊的分布使得任意两个屋子都互相可达。游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的时候,所有的灯都没有被打开。每一次,孩子们只会躲藏在没
infinity_edge
·
2020-08-17 22:20
bzoj
bzoj1095
【ZJOI2007】捉迷藏 (动态点分治总结)
动态点分治,就是在普通点分治的基础上,把每一层重心与上一层的重心连起来,形成一颗点分树,然后在每个点维护该点作重心时管辖的子树的信息。修改某个点时就从点分树中该点的位置开始,一路向它的父亲更新,因为点分树深度lognlogn,所以一次最多修改lognlogn个点。本题要求最远一对黑点的距离,因此用堆维护距离:C堆:在点分树每个结点u维护以u为根的子树内各个黑点到u管辖子树的根的距离;B堆:在点分树
hhz6830975
·
2020-08-17 22:28
图论——点分治
bzoj1095
(点分树)
题目大意:n个节点的树,m次操作,每次将白点变黑,将黑点变白,或询问最远黑点对的距离。若无修改,可直接树形dp或点分求即可,加上修改的话就要用到点分树了(orz括号序列的做法)。。。考虑没修改时点分治的做法为对每个root,最远点对即为不同子树上最远和次远黑点的距离之和,所以对于点分树的每个结点X用个堆S维护X的每棵子树最远黑点距离,以及一个堆T维护X所在子树的每个黑点与上一层节点fa[x]的距离
Max_1_
·
2020-08-17 22:42
点分树
bzoj1095
点分树
[
BZOJ1095
][ZJOI2007][线段树]Hide捉迷藏
[ProblemDescription]捉迷藏Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的时候,所有的灯都没有被打开。每
gaotianyu1350
·
2020-08-17 22:14
题解
BZOJ1095
[ZJOI2007]Hide 捉迷藏(洛谷P2056)
动态点分治BZOJ题目传送门洛谷题目传送门学了发动态点分。其实就是点分的时候把树建出来。因为每次选择的都是重心,新建的树高是lognlogn的。每次修改只会影响当前节点到根的这条链,因此直接暴力跳然后维护就好了。对于这道题,对每个中心开两个堆,一个维护子树到它的最长链,一个维护它统治的块里到父重心的最长链。在全局开一个堆维护每个重心的最长链。注意开始的时候第一个堆要插一个0表示自己。还有就是堆要维
forezxl
·
2020-08-17 21:19
洛谷
BZOJ
图论---点分治
蒟蒻zxl的Blog专栏
BZOJ1095
动态点分治,先搞出重心树,对于重心树的每一个节点维护两个队q1,q2,前者维护当前子树到父重心(重心树中的父亲???)的距离,后者维护当前节点每一个出度的q1堆顶,再全局维护一个ans,即所有节点q2的最大值和次大值……被坑点:1、一开始求出第一个重心后,dfs要从重心开始搜!!!2、dep[x]+dep[y]-2*dep[lca(x,y)];注意要∗2!!!3、开anc数组要开大一点!!!不然就
Moon1125666900
·
2020-08-17 20:01
OI
BZOJ1095
: [ZJOI2007]Hide 捉迷藏
所以为什么这道是动态点分治的模板题….细节好爆炸动态点分治按每次分治的重心建树,然后在分治的过程中处理出每个点在原树中到它新树中log个父亲的距离,它在新树中的层数然后维护(好多个)堆,分别是(新树中)每个点的子树内所有点到它父亲的距离heap[x],(新树中)每个点各个子树到它的最长链heap2[x](注意自己到自己的一条长度为0的链以处理子树延伸上来的单链),还有一个全局的堆维护每个重心处的答
L_0_Forever_LF
·
2020-08-17 20:52
BZOJ
动态点分治
堆
【
BZOJ1095
】捉迷藏,动态点分治
传送门题意给定一棵树,树上的点是黑点或白点,修改一个点的颜色或查询树上两个最远黑点的距离原本以为动态点分治是个什么很高级的东西原来不是像LCT一样恶心的东西啊,但也很恶心了问了问别人才知道所谓“动态点分治”只是把点分治时得到的信息存下来,用数据结构维护一下就可以了如果知道了什么是动态点分治,这个题目用它来做的思路还是好YY的对于每次找到的重心x,它的子树集是{Vi},那么对于每一个Vi建一个堆,来
iamxym
·
2020-08-17 19:43
「
BZOJ1095
」[ZJOI2007] Hide 捉迷藏
题目描述Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的时候,所有的灯都没有被打开。每一次,孩子们只会躲藏在没有开灯的房间中
weixin_34179968
·
2020-08-17 19:10
【
BZOJ1095
】【ZJOI2007】捉迷藏 [动态点分治]
捉迷藏TimeLimit:40SecMemoryLimit:256MB[Submit][Status][Discuss]Description捉迷藏Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。游戏是这样进行的,孩子们
weixin_33962923
·
2020-08-17 19:38
【ZJOI2007】
bzoj1095
捉迷藏【解法一】
Description捉迷藏Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的时候,所有的灯都没有被打开。每一次,孩子们只会躲
sdfzyhx
·
2020-08-17 19:04
图论
数据结构
bzoj
省选真题
边分治
【
BZOJ1095
】【ZJOI2007】Hide 捉迷藏(括号序列,线段树)
Description捉迷藏Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的时候,所有的灯都没有被打开。每一次,孩子们只会躲
Hany01
·
2020-08-17 18:41
BZOJ
省选
括号序列
线段树
BZOJ1095
捉迷藏
类似QTREE4LCT维护子树信息即可代码#include#defineFor(i,j,k)for(inti=(j);i=(int)k;i--)#defineSet(a,b)memset(a,b,sizeof(a))#defineRep(i,u)for(inti=Begin[u],v=to[i];i;i=Next[i],v=to[i])#defineL(i)(T[i].s[0])#defineR(
lsr_yali
·
2020-08-17 18:33
bzoj
动态树
【
BZOJ1095
】[ZJOI2007]Hide 捉迷藏【动态树分治】
【题目链接】学习了一发可删堆。找重心那里忘了写!del[g[i].v],RE无数发。/*Pigonometry*/#include#include#include#includeusingnamespacestd;constintmaxn=100005,maxm=maxnA,B;voidupdate(){for(;B.size()&&A.top()==B.top();A.pop(),B.pop()
BraketBN
·
2020-08-17 18:09
分治
堆
BZOJ1095
动态点分治(点分树)
题意:操作1.修改一个点的颜色(黑白互换)操作2.询问所有黑色点之间最远距离点分树:当我们可以形如点分治一样的统计答案,即每次确定一个重心,然后计算他们子树之间的贡献和得出答案的时候我们可以将每个区域的重心作为其所有子树的重心的父亲,构成一颗新的树,显然这棵树的深度不会超过logn每次对于单点(边)更新的时候,只要对其所有的父亲更新,就只需要更新log个点,这样的数据结构就是点分树对于本题来说,最
weixin_30486037
·
2020-08-13 20:12
动态点分治:bzoj 3730,bzoj 1095
具体实现就是dfs的时候fa[x][++dep[x]]=u,dis[x][dep[x]]=d;
BZOJ1095
:您需要写一个程序支持反转点的颜色,求距离最远的黑色点对的距离。
yfzcsc
·
2020-08-08 02:55
BZOJ1095
[ZJOI2007]捉迷藏 动态点分治
每次修改一个点的黑白状态,询问树上最远黑点距离拿这个题做动态点分治模板题:(%%%PoPoQQQ大爷)点分治的过程是对树块找重心之后分成多个小树块,降低规模分别处理的过程,把链的信息收到其中“最高重心”上,从所有的重心处像分治中的不同子树索取到重心的链,就可以覆盖所有链的信息。动态点分治就像把序列分治变成线段树一样,在分治的架子上加了信息维护,实现树链信息维护与查询。需要什么?每个重心需要其每个分
liuguangzhe1999
·
2020-07-04 22:36
点分治
动态点分治
BZOJ1095
& 动态点分治(好像应该叫点分树?)学习笔记
首先要说的是,QTREE4是从这题加强来的,这题可以用括号序列(现在还不会以后学)。啊既然是学习笔记我来口胡一发。觉得有这么一句话说的很好(好像是fjzzq说的),树上的动态点分治就相当于序列上的线段树,仔细一想还真有点这意思。那首先得有个像线段树一样的结构对吧,这个结构就是用每次分治的重心串起来的,得到一颗分治树,分治树的深度大概在log级别.然后像线段树一样,某个节点变化,只会导致它分治树上的
QWsin
·
2020-07-04 07:52
#
总结
#
点分治
[
BZOJ1095
]-[ZJOI2007]Hide 捉迷藏-点分树
本来今天要写很多很多的点分树的…然而上午去陪替罪羊玩,下午又被指针调戏…(只要订了计划就一定完不成系列)题目
BZOJ1095
传送门题目大意给出一个N个点的无根树,节点有黑或白两种颜色,初始时节点全是黑色
泉華子
·
2018-01-09 21:09
点分树/边分树
bzoj1095
: [ZJOI2007]Hide 捉迷藏(动态点分治)
题目大意:给出一棵树,初始每个节点为黑色。C操作改变一个节点的颜色。A操作询问树上最远的两个黑色节点的距离。这道题我也是学了好久。解法:我用到的是动态点分治,当然大牛们打LCT也是可以的(万能的LCT!!)先普及一下树的重心(相信很多人都知道)相对于上面这棵树,用f[i]表示删除i之后剩下的最大的子树的节点数(第一次听可能有点懵逼)拿节点4来说,将4删除后剩下三棵子树。(1,2,3)(5)(6,7
Hanks_o
·
2017-08-26 18:53
ST表
动态树
BZOJ1095
[ZJOI2007]Hide 捉迷藏
DescriptionJiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的时候,所有的灯都没有被打开。每一次,孩子们只会躲藏在没
Aqua_blue
·
2017-07-16 18:46
bzoj
妙啊
BZOJ1095
一开始看题以为是爆搜,十分莫名其妙,但后来看了一下——居然是二分图匹配,妙啊。考虑到无论怎么移动同行(同列)的点依然同行(同列),所以转化为是否能找到n个不同行同列的点,妙啊。
Rushfinen
·
2017-02-10 18:08
【
BZOJ1095
】[ZJOI2007]Hide 捉迷藏【动态树分治】
【题目链接】学习了一发可删堆。找重心那里忘了写!del[g[i].v],RE无数发。/*Pigonometry*/ #include #include #include #include usingnamespacestd; constintmaxn=100005,maxm=maxnA,B; voidupdate(){ for(;B.size()&&A.top()==B.top();A.po
BraketBN
·
2016-04-20 23:00
BZOJ1095
[ZJOI2007]捉迷藏 动态点分治
每次修改一个点的黑白状态,询问树上最远黑点距离拿这个题做动态点分治模板题:(%%%PoPoQQQ大爷)点分治的过程是对树块找重心之后分成多个小树块,降低规模分别处理的过程,把链的信息收到其中“最高重心”上,从所有的重心处像分治中的不同子树索取到重心的链,就可以覆盖所有链的信息。动态点分治就像把序列分治变成线段树一样,在分治的架子上加了信息维护,实现树链信息维护与查询。需要什么?每个重心需要其每个分
liuguangzhe1999
·
2016-04-11 19:00
动态点分治
BZOJ1095
: [ZJOI2007]Hide 捉迷藏
Evan课件上讲了括号序列。。。发现很厉害的样子想了一个晚上才搞出来线段树维护就好了岛娘:http://www.shuizilong.com/house/archives/bzoj-1095-zjoi2007hide-%E6%8D%89%E8%BF%B7%E8%97%8F/#include #include #include #include #include usingnamespacestd;
liutian429073576
·
2016-02-28 09:00
bzoj1095
: [ZJOI2007]Hide 捉迷藏
题目链接
bzoj1095
题意Description捉迷藏Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。
zmh964685331
·
2016-02-27 21:00
bzoj1095
Hide 捉迷藏 括号序列&线段树
膜拜了岛娘的题解,woc真是太神了。。 不过合并并没有细讲。。不过实际上还是很好理解的。 实际上核心思想是,利用括号序列将两点间距离转化为了该两点间的括号序列化简以后的长度,这样就可以用线段树来维护区间最大子段和(并不是指通常的最大子段和)了。AC代码如下(略微一压到70行还算短吧。。):#include #include #include #defineinf10000000
lych_cys
·
2016-02-21 22:00
线段树
括号序列
BZOJ1095
: [ZJOI2007]Hide 捉迷藏
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1095括号序列。。orz岛娘http://www.shuizilong.com/house/archives/bzoj-1095-zjoi2007hide-%E6%8D%89%E8%BF%B7%E8%97%8F/#include #include #include #include #d
ctlchild
·
2016-01-31 01:00
BZOJ1095
: [ZJOI2007]Hide 捉迷藏
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1095括号序列。。orz岛娘http://www.shuizilong.com/house/archives/bzoj-1095-zjoi2007hide-%E6%8D%89%E8%BF%B7%E8%97%8F/#include #include #include #include #d
ctlchild
·
2016-01-31 01:00
bzoj1095
捉迷藏
我去,传说中的动态点分治入门题,想了我几个小时还是不知道怎么处理让不同子树对父亲节点产生贡献,我的方法无论怎么样都会被同一子树的信息影响,然后Orz了一波PoPoQQQ,Hzwer大爷,对堆的处理很巧妙!具体的自己yy吧(不过bzoj过了,spoj上Re了,不知道什么鬼)/**************************************************************P
Clarehehe
·
2016-01-06 23:29
c++
动态点分治
bzoj1095
捉迷藏
我去,传说中的动态点分治入门题,想了我几个小时还是不知道怎么处理让不同子树对父亲节点产生贡献,我的方法无论怎么样都会被同一子树的信息影响,然后Orz了一波PoPoQQQ,Hzwer大爷,对堆的处理很巧妙!具体的自己yy吧(不过bzoj过了,spoj上Re了,不知道什么鬼)/**************************************************************P
Clarehehe
·
2016-01-06 23:29
动态点分治
BZOJ1095
【动态点分治】【优先队列】
学会了用priority_queue实现带删除操作的堆./*Iwillwaitforyou*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #definemakemake_pair #def
Lethelody
·
2015-04-30 15: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
其他