摘要: 与之前的那道 你能回答这些问题吗 一样,可以作为线段树维护区间的前后缀来得到最值的问题的模板题,需要知道怎样 pushup, 来得到前后缀最值以及最值 在这道题中,前后缀的最值的连续与相邻区间是否可以连接相关,如果相邻区间的相邻端点是不同的,则遵循前后缀连接到规则,即 if (a[mid] != a 阅读全文
posted @ 2025-03-05 13:13 he_jie 阅读(16) 评论(0) 推荐(0)
摘要: 线段树维护的是区间和,并且可以在 $logn$ 的时间内进行区间修改,如果想要利用线段树实现一些事情,就需要将 $pushdown$ 这个函数处理好,懒标记究竟如何在不同的题目背景下传递到子节点是我们需要讨论的。 区间方差和区间平均数这两个数值,我们发现,对于区间平均数来说就是 区间和 除以 区间长 阅读全文
posted @ 2025-03-05 13:13 he_jie 阅读(15) 评论(0) 推荐(0)
摘要: 在扫描线中,对于区间的表示有些不同,因此 \(build\) 的过程以及表示都会有些不同,这里【link】 有两种扫描线的线段树的构建方式,可以作为参考 扫描线是对线段树的一种应用,做法是逐个扫描每个矩形的上下边,并用线段树维护图形的宽,以此得到整个图形覆盖的面积 1. 需要存储的东西 每个矩形的上 阅读全文
posted @ 2025-03-05 13:13 he_jie 阅读(28) 评论(0) 推荐(0)
摘要: 可以实现 O(logn) 的区间修改了 懒标记的作用是当检测到区间会被修改时,直接修改并打上标记,在用到它的子区间时,再利用懒标记来修改儿子节点,这样,不必一直考虑到叶子节点,而是用懒标记记录需要的修改 1. 建立线段树 以下为带懒标记的线段树的基本结构 #define ls (p << 1) #d 阅读全文
posted @ 2025-03-05 13:12 he_jie 阅读(74) 评论(0) 推荐(0)
摘要: 这种线段树支持 \(O(logn)\) 的单点修改与区间查询 1. 基本的线段树建立 利用分治的思想,一个大的区间被分为两个区间,之后再分,直到分到每个点为止 可以用结构体存储线段树的每个节点,节点的最基础的属性就是区间的左右端点,表示了区间的范围 // 这里所有区间的个数严格小于 N * 4,因此 阅读全文
posted @ 2025-03-05 13:12 he_jie 阅读(24) 评论(0) 推荐(0)
摘要: 目录 单点修改的线段树 带懒标记的线段树 用前后缀维护的线段树 需推导公式维护的线段树 直角坐标系上的线段树(扫描线) 阅读全文
posted @ 2025-03-05 13:11 he_jie 阅读(17) 评论(0) 推荐(0)