随笔分类 -  数据结构——线段树

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

点击右上角即可分享
微信分享提示
主题色彩