随笔分类 - 数据结构——线段树
『学习笔记』可持久化线段树(主席树)
摘要:主席树的最基础的操作就是查询历史版本区间第 大,带修。 这个问题的基础解决思路:对于每次修改都建一棵权值线段树,显然空间开不下。 这时可持久化线段树的思路就应运而生了。 主要思想: 不难发现,每次修改只会有一条链上的值发生改变,所以我们不需要建出整棵新树,只需要把新建那条链上的点即可。
P3747 [六省联考 2017] 相逢是问候 题解
摘要:Description Luogu传送门 Solution 不打算详细写了,简单写写做题历程。 一看题,显然要用线段树维护,但是 这东西怎存?? 于是看了一眼标签,发现 欧拉公式 这个东西,于是想到欧拉定理。 再联想到区间开方的操作只有前 次有用。发现
P7453 [THUSCH2017] 大魔法师 题解
摘要:Description Luogu传送门 Solution 标签里就俩东西,没错就是他们了。 观察到 4,5,6 操作中需要用到一个常数 ,所以我们的矩阵得开到 1 * 4,存 。 至于转移的 6 个矩阵这里就不推了,比较基础(不会真的有人来做这道题了连矩阵
2021-11-15 NOIP模拟赛 6
摘要:今天的题都好好啊。 A. 【2020.12.2 NOIP模拟赛 T1】最小得分和(mark) 观察到 ,这就算把数对们一对一对的找出来然后 都会 T 啊 我们考虑二分,二分所选数对中差的绝对值最大是多少。 假设当前二分
noip 训练 (线段树专项)
摘要:P4198 楼房重建 Description Luogu传送门 Solution 线段树维护斜率,pushup时记录左儿子区间最大值,把右儿子合并上去。 详细题解:[P4198 楼房重建 题解 - xixike] P2824 [HEOI2016/TJOI2016]排序 Description Luo
P4198 楼房重建 题解
摘要:Description Luogu传送门 Solution 不难想到用斜率来计算能看到多少栋楼房,由于哪些楼房能看到哪些不能被看到是固定的,所以不是单调队列优化什么的。 暴力做法是 的,我们考虑用线段树来维护。 线段树里记录两个值, 和 。
P1438 无聊的数列 题解
摘要:Description 洛谷传送门 Solution 很明显的一道线段树维护区间题目。 查看一下标签不难发现,可以用差分来维护。 具体来说,对于操作 1。 我们给 加上 。 + 1 ~ 加上 (两个数之间的差)。 减去 \(
CF620E New Year Tree 题解
摘要:Description 洛谷传送门 Solution 本题要不难想到要用线段树或树状数组之类的数据结构,但是题目要求在树上操作,我们该如何处理呢? 首先我们要用到一个叫dfs序的概念。其实并不难,刚接触的同学不要被它吓到,它本质上就是一棵树的先序遍历,所谓先序遍历就是先遍历根,然后遍历左子节点,最后
洛谷 P2061 [USACO07OPEN]City Horizon S
摘要:Description 洛谷传送门 Solution 我们发现我们是无法快速判断一个区间内我们需要修改哪些数,不需要修改哪些数的。同时我们观察到整个区间初始全为 0. 所以我们考虑对询问进行排序,按修改高度从低到高排序。 排完序后,我们对于每一个操作就相当于进行区间修改了(现在区间内的数一定小于等于
洛谷 P1471 方差
摘要:Description 洛谷传送门 Solution 一道非常经典的线段树问题,下面我们来分析一下。 题目要求我们支持区间加,求区间平均值,求区间方差。 区间加和区间平均值都很简单,唯独这个区间方差要如何维护呢? 我们先来看一下方差的式子: \(S^2 = \
洛谷 P6327 区间加区间sin和
摘要:Description 洛谷传送门 似乎是一道前 ,不过反正现在不是了。 Solution 题目名字已经暗示我们要使用线段树之类的数据结构了。 看一眼题面,好吧,就是线段树维护。 本题需要一点数学基础。 \(sin(a + b) = sin(a) * cos(b) + cos(a)
洛谷 P2824 [HEOI2016/TJOI2016]排序
摘要:Description 洛谷传送门 Solution 一眼就能想到线段树,但是线段树似乎也无法维护啊?那怎么做? 于是我们查看标签…… 发现……二分答案?这怎么二分答案?? 于是我们再回想一下题目要求计算什么:位置是 的数是多少。 而且只有一次询问。 既然是二分答案,那我们就二分呗。 假
CF718C Sasha and Array
摘要:Description 洛谷传送门 Solution 转移方程就是斐波那契数列求和,题目里也都给了。 矩阵也比较基础吧,不写了。 但是这道题需要用到线段树维护矩阵乘法。 听着挺吓人的,其实也没有多难。 我们首先建一棵矩阵类型的线段树。 然后 为初始输入的斐波那契数(即 \(f^{