线段 区间

线段树合并学习笔记

## 基本思路 线段树合并其实就是简单的暴力合并就可以了。一般是运用于权值线段树。通常是在每个节点都需要要一颗线段树才能维护答案,且有多个节点时,会使用线段树合并。但每个节点所有的权值不能太多,如果都是比较满的二叉树的话,时间复杂度就会很高。 通常,加入值的数量跟节点数量在同一级别的话,时间复杂度是 ......
线段 笔记

FHQ Treap实现区间操作

## 引入 > 题目来源:[文艺平衡树 - 洛谷P3391](https://www.luogu.com.cn/problem/P3391) > 您需要写一种数据结构(可参考题目标题),来维护一个有序数列。 > 其中需要提供以下操作:翻转一个区间,例如原有序序列是 $5\ 4\ 3\ 2\ 1$,翻 ......
区间 Treap FHQ

李超线段树学习笔记

### 用途 李超线段树的用法非常固定,一般就是让你求对于给出的一些线段或直线中,对于某个x最大的y是那个。 通常可以用于斜率优化。 而其的时间复杂度是 $O(n\log n^2)$ ### 思路 注:下文默认是线段,因为直线也只用改一下就行了。 我们建立一颗线段树,每个节点保存在当前区间,当x=m ......
线段 笔记

李超线段树

# Part 1:标记永久化 **一言以蔽之**:标记永久化就是不再下放标记,而是让标记永久地停留在线段树的节点上,统计答案时再考虑这些标记的影响 # Part 2:维护直线 我们以下面这道题为例子来进行讲解 ## [JSOI2008] Blue Mary开公司 ([题目传送门](https://w ......
线段

线段树合并

# Part 1:知识点 - ### 前置知识:动态开点线段树 - 线段树合并是一个递归的过程。我们合并两棵线段树时,用两个指针 $p,q$ 从两个根节点出发,以递归的方式**同步遍历**两棵线段树。 1.若 $p,q$ 之一为空,则以非空的那个作为合并的节点 2.若 $p,q$ 均不为空,则递归合 ......
线段

【模板】线段树

# 引入 ## 题目描述 给定$n$个数$a[1],a[2],a[3]...a[n]$,现在又下面两种操作: 1.询问区间$[x,y]$的和,并输出。 2.将下标为$x$的数增加$val$。 一共$x$此操作 $1\le n,m\le 100000$,保证在$int$范围内。 ### 方法一:暴力枚 ......
线段 模板

线段树

线段树 除了最后一层满二叉树,用堆(一维数组)来存树,一般来说,开4n的空间 ![线段树](D:\软件\Typora\Typora\笔记\示意图\线段树.png) #### build(int u, int l, int r) 将一段区间初始化为线段树 #### push up() 由子节点更新父节 ......
线段

Even(23Nowcoder6.J)(二分+可持久化线段树)

### 题意: > 给定一个序列$a$,定义一次操作选择序列中一个元素$a[i]$, 使$a_i = \lfloor \frac{a_i}{2} \rfloor$,其中$a_i$为当前序列中的最大偶数,若没有则是最大奇数。 > > 有$q$组询问,每次给定$k, l, r$分别表示操作次数和操作区间 ......
线段 Nowcoder6 Nowcoder Even 23

5445.子数组和排序后的区间和

1 int cmp(const void *a,const void *b) 2 { 3 return *(int*)a-*(int*)b; 4 } 5 int rangeSum(int* nums, int numsSize, int n, int left, int right){ 6 if(n ......
数组 区间 5445

[刷题笔记][算法模型总结] Luogu P1880 [NOI1995] 石子合并 || 区间dp之合并石子模型

[Problem](https://www.luogu.com.cn/problem/P1880) ### Solution 本题还有一个弱化版,见[Luogu P1775](https://www.luogu.com.cn/problem/P1775) 我们发现本题和弱化版唯一区别就是本题有环。 ......
石子 模型 区间 算法 笔记

Codeforces 1855B:Longest Divisors Interval 最长的连续约数区间

# [1855B.Longest Divisors Interval](https://codeforces.com/contest/1855/problem/B "Codeforces 1855B") ## Description: - 对于一个整数 $n$ $(1\leq n \leq 10^{ ......
约数 区间 Codeforces Divisors Interval

[Ynoi2012] NOIP2015 充满了希望(扫描线+线段树)

### [题目传送门](https://www.luogu.com.cn/problem/P5524) ## solution 简单题。 我们正着做扫描线。 设 $t_i$ 表示位置 $i$ 最后一次进行二操作的时间,那么一操作就是交换 $t_x,t_y$ ,二操作就是区间复制。 对于三操作,开一个 ......
扫描线 线段 Ynoi 2012 NOIP

矩阵,分治,线段树。 (其一)

## 矩阵 我一向对矩阵是深恶痛绝的,难写是一点,更多是因为我总觉得发明矩阵的人觉得自己很酷。 (矩阵这玩意总是让我想不清楚本质 以至于我总想着以某些方法代替矩阵,以前喜欢用分治,那时认为矩阵的本质是分治,但是分治这玩意写出来奇丑无比,今天既然见到题解有类似的实现,便顺便梳理一下, 希望有更深的理解 ......
线段 矩阵

Limit线段树题单题解(更新中)

## [P3373 线段树模板 2](https://www.luogu.com.cn/problem/P3373) ![image-20230803010844370](https://zeoy-typora.oss-cn-hangzhou.aliyuncs.com/image-202308030 ......
线段 题解 Limit

【胡思乱想】用树状数组维护区间加等比数列和区间查和

等比数列的比值为定值 $d\ne 1$,那么可以把 $a$ 差分成 $b_i=a_i-d\cdot a_{i-1}$,则有 $$a_i=\sum_{j=1}^ib_j\cdot d^{i-j}$$ $$p_i=\sum\limits_{j=1}^ia_i=\sum_{j=1}^ib_j\cdot\s ......
区间 数列 数组 胡思乱想

【复健】线段树

## 线段树复健 OJ 上的题还没做完,下午再说(你 ### 概念 一种**二叉搜索树**,通过二叉树形结构储存数据,能够解决大部分与**区间操作**有关的问题,当然应用范围不止于区间操作。 原理是用二分(?)维护一定的区间。 ### 主体部分实现 #### 建树 考虑递归建树,一直二分直到只剩一个 ......
线段

[HEOI2013] Segment李超线段树

RT 感觉会模板就差不多了,可用作处理一些线段或直线的问题,转化过来的也可以。比如DP的斜率优化,直线的话只用一个log,线段要两个log。 [[HEOI2013] Segment](https://www.luogu.com.cn/problem/P4097 "[HEOI2013] Segment ......
线段 Segment HEOI 2013

线段树

> 「观前提醒」 > > 「文章仅供学习和参考,如有问题请在评论区提出」 [toc] ## 引入 **线段树(Segment Tree)**是算法竞赛中常用的用来维护区间信息的数据结构。 线段树可以在 $O(logN)$ 的时间复杂度内实现**单点修改、区间修改、区间查询**等操作。能够用来维护很多 ......
线段

leetcode第353场周赛 4 - 差分数组维护区间修改

[题目传送门](https://leetcode.cn/contest/weekly-contest-353/) # [2772. 使数组中的所有元素都等于零](https://leetcode.cn/problems/apply-operations-to-make-all-array-eleme ......
数组 区间 leetcode 353

线段树

这是洛谷线段树模板题绿标题,线段树好像没什么好总结的,主要看脑子 1 #include<iostream> 2 using namespace std; 3 #define int long long 4 const int N = 1e5 + 10, inf = 0x3f3f3f3f3f3f3f3 ......
线段

动态规划5.2-区间动态规划

### 一、区间动态规划 区间动态规划是动态规划中的一类题,下面先引入几个题目,最后总结一下此类问题的相关解题思路 ### 二、例题 #### [1.[Daimayuan Online Judge.石子合并]](http://oj.daimayuan.top/course/5/problem/199 ......
动态 区间 5.2

LeetCode 热题 100 之 56. 合并区间

# 题目 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 **示例 1:** 输入:intervals = [[1,3],[2, ......
区间 LeetCode 100 56

luogu P3733 [HAOI2017] 八纵八横 题解【线段树分治+线性基+可撤销并查集+bitset】

[TOC] # 题目大意 [题目链接](https://www.luogu.com.cn/problem/P3733 "题目链接") >给出一张 $n$ 个点 $m$ 条边的连通无向图,边带边权 $w_i$ 。有以下三种操作,共 $q$ 次: $\centerdot$在点 $x,y$ 之间加入一条边 ......
线段 题解 线性 bitset luogu

[TJOI2007] 线段

# [TJOI2007] 线段 ## 题目描述 在一个 $n \times n$ 的平面上,在每一行中有一条线段,第 $i$ 行的线段的左端点是$(i, L_{i})$,右端点是$(i, R_{i})$。 你从 $(1,1)$ 点出发,要求沿途走过所有的线段,最终到达 $(n,n)$ 点,且所走的路 ......
线段 TJOI 2007

线段树(动态开点,合并,区间修改)

```cpp #include #include #include #include #include using namespace std; typedef long long ll; int n, m, root; struct MergeSegmentTree { #define lid l ......
线段 区间 动态

lazy 线段树代码

描述 代码: 1 class Node { 2 int l, r; 3 int sum; 4 int lazy; 5 } 6 7 class SegmentTree { 8 9 private Node[] tree; 10 11 private int[] nums; 12 13 public S ......
线段 代码 lazy

懒标记线段树

#### 1. 操作 | 符号 | 含义 | | | | | $nums$ | 原数组 | | $d$ | 线段树节点维护值 | | $lazytag$ | 线段树节点懒标记值 | | $p$ | 当前节点 | | $s$ | 查询区间的开始 | | $e$ | 查询区间的结尾 | | $l$ | ......
线段 标记

树上查询最大路径子段和的模板,线段树+树链剖分实现,带修

可以只使用线段树部分使其变成求区间最大字段和 template<class T> struct PathSubSegmentOnTree { struct ST { int l, r; T sum; T lMaxSum, rMaxSum, maxSum; T lMinSum, rMinSum, mi ......
线段 路径 模板

Tracking Segments(二分,区间前缀)

#include <bits/stdc++.h> #define int long long using namespace std; const int N=1e6+10,mod=1e9+7; int n,t,a[N],f[N],res,num,ans,m,ll[N],rr[N],q,s[N]; ......
前缀 区间 Tracking Segments

双指针/位运算/离散化/区间和并

- ### 双指针 - 两个指针指向两个不同的序列 - 两个指针指向同一个序列(归并排序,快速排序) - 主要作用:将暴力O(n^2)遍历通过两个指针的某种单调性质**优化到O(n)**,也就是说将**内层循环变量j通过与外层循环变量i的关系**,将内层循环次数降低不定次 - #### 模板: `` ......
区间 指针