树
文章平均质量分 81
伍叁壹_
这个作者很懒,什么都没留下…
展开
-
(动态)树分治 学习笔记
浅谈一下学了好久的树分治。适合处理大规模树上路径信息问题。P3806 【模板】点分治1很基础的了,询问树上距离为 kkk 的点对是否存在。大概就是每次找重心当作根,对于当前的根,统计每个子节点到它的距离,然后用双指针遍历,当且仅当两个儿子到当前根的距离之和为 kkk 且来自根的不同子树时,这两个子节点的距离就为 kkk,那么距离为 kkk 的点对存在。另一道类似的升级题:P4178 Tree。题意变为求出树上两点距离小于等于 kkk 的点对数量。思路差不多,不过是在遍历统计答案的时候使用双指针统计答案,即原创 2022-06-30 15:38:51 · 239 阅读 · 0 评论 -
【LG-P3920/WC2014】 紫荆花之恋
在此提供一种可能相对其他解法较为好写的做法。首先考虑一棵如下图的树,其中 rtlr0=6, rtlr1=5rtlr_0=6,\ rtlr_1=5rtlr0=6, rtlr1=5。发现此时这棵树不考虑根节点只有两条链,而左右链的末尾分别是 rtlr0rtlr_0rtlr0 和 rtlr1rtlr_1rtlr1。同时,按照套路,我们将 dist(i,j)≤ri+rjdist(i,j) \leq r_i+r_jdist(i,j)≤ri+rj 化为 dist(i,l)−ri≤rj−dist(j,l)di原创 2022-06-02 20:48:09 · 247 阅读 · 0 评论 -
动态树之 Link Cut Tree (做题记录)
LCT 题单做题记录一、维护链信息P3203 [HNOI2010]弹飞绵羊:维护一条路径的长度,由于题目大大降低了难度,所以只需要使用 accessaccessaccess 和 splaysplaysplay 两个操作即可。要学会灵活应用 LCT 中的函数,不要有刻板思维(如改变 cutcutcut 函数的写法)。P1501 [国家集训队]Tree II:需要维护加标记、乘标记和翻转标记三个 lazytaglazytaglazytag。pushdownpushdownpushdown 时,先处原创 2022-05-18 13:35:04 · 109 阅读 · 0 评论 -
【LG-P4332 [SHOI2014]】三叉神经树 题解
题面挺有意思(恶心)的。传送门:P4332 [SHOI2014]三叉神经树LCTSolution1对于每一个非叶子节点 iii,有 valival_ivali,表示其输出为 1 的儿子的总数。所以对于每一个 vali, i∈[1,n]val_i,\ i \in [1,n]vali, i∈[1,n] ,其取值范围是 0~3。所以我们发现这个非叶子节点 iii 最后输出的结果就是 ⌊vali2⌋\left\lfloor\dfrac{val_i}{2}\right\rfloor⌊原创 2022-04-08 21:35:53 · 312 阅读 · 0 评论 -
LG-P7549 [BJWC2017] 神秘物质 题解
传送门:P7549 [BJWC2017] 神秘物质先膜拜一下 cyf\text{cyf}cyf 学长。本题解主要是补充一下 cyf\text{cyf}cyf 学长思路的细节。Solution1首先看操作一、二,发现它们的本质实际上都是对一段区间的操作。所以本题使用文艺平衡树来维护。也就是说,对于每次的一、二操作,我们都会将要进行修改的区间旋转到一颗子树内,即文艺平衡树中翻转区间的预操作。具体可以看@皎月半洒花在文艺平衡树题解中放的这张图:(设将要修改的区间为 [l,r][l,r][l,r]。)原创 2022-03-30 13:39:09 · 352 阅读 · 0 评论 -
主席树(可持久化线段树)
前言真不是有目的地学习主席树的…(实在是因为它太上头了)《关于我某天第二节晚修一直在看<进阶指南>可持久化数据结构这章然后学了主席树这件事》所以新学一个数据结构只要一整节晚修。主席树也叫可持久化线段树、函数式线段树。其思想与可持久化 Trie\mathtt{Trie}Trie 相似。其实,就是在普通线段树的基础上,修改了一下 update\mathtt{update}update 操作,使得它成为可持久化数据结构:每次新建一个根节点,保存此次修改之后的状态。在遍历线段树的时候,对更原创 2022-03-19 08:17:27 · 140 阅读 · 0 评论 -
P4587 [FJOI2016]神秘数 题解
传送门:P4587 [FJOI2016]神秘数主席树Solution思路其实就是一楼大佬的思路,只不过大佬写的有些内容我太弱看不懂,所以来补充一下。1对于区间 [l,r][l,r][l,r],将它升序排序后从左往右扫,设当前可以表示出的数为[1,x][1,x][1,x],ansansans 为 (x+1)(x + 1)(x+1)。显然,对于当前扫到的数 aia_iai,当且仅当它小于等于 ansansans 时,才对 ansansans 有用。用处即将值域扩大到 [1,x+ai][1,x+a原创 2022-03-19 08:21:05 · 407 阅读 · 0 评论 -
[雅礼集训 2017 Day1]市场
线段树的除法:EG:(来源:GDEZ2021新初一第一次测试 第三题)update:1.区间加2.区间除(转化为区间减。当区间内最大值除完后与最小值除完后一样时,存下除后最大值比原先要少的值,再放入 lazytaglazytaglazytag 中即可 记得负数向下取整用 floor((double)x/y)floor ((double)x/y)floor((double)x/y) )query:1.区间和 2.区间最小值题目:Problem C: [雅礼集训 2017 Day1]市场$ C原创 2022-03-18 13:12:03 · 105 阅读 · 0 评论 -
LG-P3979 遥远的国度
树链剖分 换根操作三个操作:修改根;修改路径上的值;查询以 xxx 为根的子树。1 修改根:用变量 rootrootroot 把它存下来即可,它主要是为操作 3 服务的。在 dfsdfsdfs 的时候以 1 为根。2 修改路径上的值:基本上是常规操作,线段树存两个变量: lzlzlz 和 minnminnminn 。minnminnminn 为 3 服务,不多说, lzlzlz 懒标记主要用于判断 pushdownpushdownpushdown ,所以值什么的随便赋就原创 2022-03-18 13:11:17 · 72 阅读 · 0 评论