随笔分类 - 数据结构——线段树
摘要:P4374 [USACO18OPEN]Disruption P 题意简述 给定一颗树几条额外的边(保证每两个点之间只有一条边),求对于原有的所有边去掉之后,能够重新连接树的最短的替代用道路的长度,如果不存在合适的替代用的道路,输出 \(-1\) 解题思路 可以发现,由于一开始的图是树那么加上一条额外
阅读全文
摘要:P2184 贪婪大陆 题意简述 若 \(q=1\),则表示在 \([l, r]\) 这段区间布上一种地雷; 若 \(q=2\),则表示询问当前 \([l, r]\) 区间总共有多少种地雷。 解题思路 如果一般的线段树题一样,去维护题目要我们求的 \(——\) 区间内地雷的种数,就会发现,这个东西不满
阅读全文
摘要:P6812 「MCOI-02」Ancestor 先辈 题意简述 区间加 查询一个区间是否单调不降 解题思路 本来这题是不想写题解的,但做着做着就发现还真有小 \(trick\) 在里面 主要说说操作 \(2\) ,直接去维护的话很麻烦,因为在 pushup 的过程中,我们不仅要看左右儿子是否单调不降
阅读全文
摘要:P1253 [yLOI2018] 扶苏的问题 题意简述 给定区间 \([l, r]\) ,将区间内每个数都修改为 \(x\) 给定区间 \([l, r]\) ,将区间内每个数都加上 \(x\) 给定区间 \([l, r]\) ,求区间内的最大值 解题思路 就是维护一个最大值就行了 如果是操作 \(1
阅读全文
摘要:P2894 [USACO08FEB]Hotel G 题意简述 输入一个数 \(x\) ,在 \([1,n]\) 中找满足长度为 \(x\) 的最左边的全是 \(0\) 区间,输出左端点并将这个区间全部赋值为 \(1\),如果找不到则输出 \(0\) 输入两个数 \(x,y\) ,将区间 \([x,x
阅读全文
摘要:P2574 XOR的艺术 题意简述 异或一个区间 \([a,b]\) 指定一个区间 \([a,b]\),求区间里 \(1\) 的个数 解题思路 异或和乘法加法一样满足结合律,所以可以用线段树去维护 对于操作 \(2\) ,我们可以很简单地想到用区间和去维护 那么对于操作一,我们可以这样想,一个区间里
阅读全文
摘要:P4588 [TJOI2018]数学计算 题意简述 小豆现在有一个数 \(x\),初始值为 \(1\)。小豆有 \(Q\) 次操作,操作有两种类型: 1 m:将 \(x\) 变为 \(x \times m\),并输出 \(x \bmod M\) 2 pos:将 \(x\) 变为 \(x\) 除以第
阅读全文
摘要:好耶,花了将近一上午,且在$Quick$_$AK$的帮助在a了这道模板题 简要思路 这道模板题有两个区间操作 将某区间每一个数乘上 x 将某区间每一个数加上 x 有两种操作,那岂不是要两个$tag$? (⊙v⊙)嗯,是的 举个栗子: 假设我们维护一个量$a$,它有两个标记$+b$和$*c$ 因为线段
阅读全文
摘要:题目链接:LOJ 咕咕咕 #include <iostream> #include <cstdio> #include <cstring> #define ls p<<1 #define int long long #define rs p<<1|1 using namespace std; int
阅读全文
摘要:线段树的基本用途 查询某个区间 修改某个区间或点 是不是和树状数组很像? 注意 线段树的数组一定要开$4n$ 建树代码 (sum) 通过二叉树的性质可知:对于一个父节点,它的左右两个儿子节点分别为i乘以2,i乘以2+1, 由此可以用数组模拟线段树: inline void build(int p,i
阅读全文

浙公网安备 33010602011771号