P3348 [ZJOI2016]大森林】的更多相关文章

\(\color{#0066ff}{ 题目描述 }\) 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. 小Y掌握了一种魔法,能让第l棵树到第r棵树的生长节点长出一个子节点.同时她还能修改第l棵树到第r棵树的生长节点.她告诉了你她使用魔法的记录,你能不能管理她家的森林,并且回答她的询问呢? \(\color{#0066ff}{输入格式}\) 第一行包含 2 个正整数 n,…
题链: https://www.luogu.org/problemnew/show/P3348 题解: LCT,神题 首先有这么一个结论: 每次的1操作(改变生长点操作),一定只会会对连续的一段区间产生影响. (即不存在对两段不相连的区间都进行了该操作的情况,令这种情况为[2]) 简单来说就是因为该操作需要对应的那些树存在那个节点. 如果发生了情况[2],即表明区间[l1,r1],[l2,r2]有节点x,且[l1+1,r2-1]无节点x,且r2-1>=l1+1 但是我们的生长操作0操作每次进行的…
传送门 刷了那么久水题之后终于有一题可以来写写博客了. 但是这题太神仙了我还没完全弄懂-- upd:写完博客之后似乎懂了. 思路 首先很容易想到\(O(n^2\log n)\)乘上\(O(\frac{n}{\log n})\)的巨大常数的暴力做法(雾 然后可以发现这题支持把询问抽离出来最后做,那么我们可以先只关注修改操作. 可以发现一个点在\([l,r]\)的树上连上去和在所有树上都连上去其实没有太大区别,只是修改生长节点时要判一下是否存在,其他时候其实可以每一棵树上都连一个,因为不存在的点并不…
洛谷题目传送门 思路分析 最简单粗暴的想法,肯定是大力LCT,每个树都来一遍link之类的操作啦(T飞就不说了) 考虑如何优化算法.如果没有1操作,肯定每个树都长一样.有了1操作,就来仔细分析一下对不同树的影响. 假设有一个1操作形如\(l\ r\ x\),那么从微观来看差异,我们只关注第l-1棵树和第l棵树.再假设以后都没有了0操作,那么我们可以认为,第l棵树是第l-1棵树把这个1操作以后嫁接在原来生长节点上的所有节点(以及所有子树)全部转而嫁接到x上.再看第r棵树和第r+1棵树,是不是可以认…
传送门 题解 题面大意: \(0.\)区间加节点 \(1.\)区间换根 \(2.\)单点询问距离 如果没有\(1\)操作,因为区间加节点都是加在下面,所以我们可以直接把\(n\)棵树压成一棵树,直接询问即可 有\(1\)操作怎么办? 上面挖掘了一点性质, 加节点加在下面,那么我们可以先把节点都加上去,再询问 那么把操作离线, 先按操作位置排序,再按操作排序(\(0,1\)先),再按时间排序 对于\(0,1\)操作都新建节点 \(0\)建实点 \(1\)建虚点 \(0\)操作的点将连向最后的\(1…
Luogu3348 BZOJ4573 LOJ2092 题解 对于每个\(1\)操作建一个虚点,以后的\(0\)操作都连在最近建好的虚点上.这样每次整体嫁接的时候,直接把这个虚点断掉它原来的父亲,再\(link\)过去就可以了 求在\(x\)位置的两点之间距离 , 只要之前的换点加点操作完成 , 就可以计算 , 而且也要马上计算 , 之后树的形态就又要变了 , 这样保证了复杂度 关于代码 : 先按思路把离线的事件处理出来 然后发现这种离线的利用虚点的转移只能用\(LCT\)维护 注意 : 只有实点…
http://www.lydsy.com/JudgeOnline/problem.php?id=4573 https://www.luogu.org/problemnew/show/P3348#sub http://uoj.ac/problem/195 https://loj.ac/problem/2092 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. 小Y掌握了一种…
题目描述 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. 小Y掌握了一种魔法,能让第l棵树到第r棵树的生长节点长出一个子节点.同时她还能修改第l棵树到第r棵树的生长节点.她告诉了你她使用魔法的记录,你能不能管理她家的森林,并且回答她的询问呢? 题解 这题太神了,废了我一下午. 看到区间操作,就可以想到差分或者扫描线,我们会发现这题基本没有好的方法去执行批量操作,所以我们…
Description: 小Y家里有一个大森林,里面有n棵树,编号从1到n 0 l r 表示将第 l 棵树到第 r 棵树的生长节点下面长出一个子节点,子节点的标号为上一个 0 号操作叶子标号加 1(例如,第一个 0 号操作产生的子节点标号为 2), l 到 r 之间的树长出的节点标号都相同.保证 1<=l<=r<=n . 1 l r x 表示将第 l 棵树到第 r 棵树的生长节点改到标号为 x 的节点.对于 i (l<=i<=r)这棵树,如果标号 x的点不在其中,那么这个操作…
Description 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力.小Y掌握了一种魔法,能让第l棵树到第r棵树的生长节点长出一个子节点.同时她还能修改第l棵树到第r棵树的生长节点.她告诉了你她使用魔法的记录,你能不能管理她家的森林,并且回答她的询问呢? Input 第一行包含 2 个正整数 n,m,共有 n 棵树和 m 个操作.接下来 m 行,每行包含若干非负整数表示…