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