随笔分类 -  树链剖分

摘要:传送门 考虑一个玩家的路径 $(x,y)$ 对路径上的一个节点 $u$ 的贡献 设 $lca=LCA(x,y)$ ,当 $u$ 在链 $x,lca$ 上时,路径会产生 $1$ 的贡献当且仅当 $dep[x]-dep[u]=w[u]$ 其中 $dep[i]$ 表示节点 $i$ 的深度,$w[i]$ 就 阅读全文
posted @ 2019-08-08 13:29 LLTYYC 阅读(185) 评论(0) 推荐(0)
摘要:传送门 树剖模板,有换根操作 先打一个树剖模板 然后考虑换根有什么影响 对于两点间的路径上的询问显然没有影响 子树查询和更改有一些影响: 画个图,然后分类讨论一下 如果在原树上新根 $rt$ 不是询问的子树根 $x$ 的后代节点 那么不会有影响 否则,询问的区间就是整颗树减去 $rt$ 在原树上最高 阅读全文
posted @ 2019-02-24 15:04 LLTYYC 阅读(218) 评论(0) 推荐(0)
摘要:传送门 树剖+动态开点线段树 对每种宗教开一个线段树,用来维护区间和,区间最大值 普通的线段树空间不够,所以要动态开点 因为宗教会改变,所以要有删除操作和插入操作 比如城市1从信仰a变成信仰b,那就把a的线段树上城市1删掉,在b线段树上插入城市1 询问就只要询问与旅行者同宗教的值就好了 怎么实现也不 阅读全文
posted @ 2018-10-11 09:05 LLTYYC 阅读(201) 评论(0) 推荐(0)
摘要:传送门 先考虑在一段序列上进行操作如何维护 线段树 记录每个区间的的颜色段数量 但是区间合并时两边可能颜色相同 所以再记录一下每个区间最左和最右的颜色 合并时如果相邻两边颜色相同,那么颜色段数量就要减一 然后考虑在树上操作 直接上树剖,一样用线段树维护就好了 询问时记录一下当前左右两边最上面的颜色 阅读全文
posted @ 2018-10-11 08:34 LLTYYC 阅读(254) 评论(0) 推荐(0)
摘要:传送门 非常显然的一道树剖 用线段树维护区间为1区间为0 因为修改只有在根到节点 甚至不用维护深度 因为一开始节点都为0 甚至不用线段树的 build 操作 比模板还简单... 至于询问修改了多少就只要把修改后的数量减去修改前的数量 阅读全文
posted @ 2018-10-10 09:46 LLTYYC 阅读(238) 评论(0) 推荐(0)
摘要:传送门 树链剖分 树链剖分就是把一颗树分成很多条链,然后把链上的数据进行瞎搞操作(本题是用线段树区间修改) 一步一步慢慢讲: 1. 从根节点开始对整颗树进行一次遍历 求出每个节点子树的大小,父节点,深度和重儿子 重儿子指 儿子子树大小最大 的儿子节点 (做这些都是为了后面瞎搞) 2. 再来一次遍历. 阅读全文
posted @ 2018-08-23 22:00 LLTYYC 阅读(222) 评论(0) 推荐(0)