
线段树
文章平均质量分 82
胡牧之.
此人很懒,但还添加了简介
展开
-
CF783D(div2)Optimal Partition(树状数组+离散化)
题目原题链接问题描述给定一个长度为nnn的数组aaa,共有2n−12^{n-1}2n−1种策略将其划分为连续的段,对于一段al...ara_l...a_ral...ar,sum=∑i=lraisum=\sum_{i=l}^{r}a_isum=∑i=lrai,可以用valvalval来评定价值:val={r−l+1sum>00sum=0−(r−l+1)sum<0val=\begin{cases}r-l+1 & sum>0 \\0 & sum=0 \\原创 2022-05-01 15:44:18 · 459 阅读 · 0 评论 -
Stone Games(思维+可持久化线段树)
题目原题链接问题描述主要意思就是给定一个正整数砝码集合,问这堆砝码无法凑出的最小正整数。分析先分析出一个特例:当砝码集合中不存在111时,那么答案就是111。以[0,pre][0,pre][0,pre]表示当前集合可以凑出该区间内的所有数,当我们再加入一个数xxx时,相当于将这个区间整体右移,可以得到[x,pre+x][x,pre+x][x,pre+x],若两个区间存在重叠或相邻部分,则可以说明加入xxx到集合中后可以凑出[0,pre+x][0,pre+x][0,pre+x]内的所有数。我原创 2022-04-13 20:51:05 · 587 阅读 · 0 评论 -
线段树通用模板
标准模板#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;long long A[MAXN];struct tnode{ long long sum[2], lazy[2]; int l, r;};tnode operator + (const tnode &A, const tnode &B){ tnode C; C.l = A.l;原创 2022-03-04 16:18:44 · 119 阅读 · 0 评论 -
炸鸡块君与FIFA22(线段树,ST表)
题目原题链接问题描述输入第一行输入两个整数n,q(1≤n,q≤2×105)n,q(1\leq n,q \leq 2\times 10^5)n,q(1≤n,q≤2×105)表示游戏结果字符串长度与询问次数。第二行输入一个字符串,表示游戏结果字符串,保证之中只含有W、L、DW、L、DW、L、D三种字符,分别表示胜利、失败、平局。需要注意的是:若你当前的分数是333的整倍数(包括000倍),则若下一局游戏失败,你的分数将不变(而不是减一)。接下来qqq行,每行三个数l,r,s(1≤l,r≤n,0≤s原创 2022-02-05 18:15:39 · 2395 阅读 · 0 评论 -
动态开点线段树——求逆序对数
文章目录一、与普通线段树的比较空间区别二、过程分析三、求逆序对数一、与普通线段树的比较空间区别之前学习的线段树空间大小为O(4*n),根据值域的大小而开辟不同大小的空间,一开始我们就需要为线段树上的每一个点都分配一个空间,这就导致普通线段树不适合解决值域过大的问题。那么反过来想,我们能否建立一个可以动态分配空间的线段树,把点分给我们实际上使用的位置,这样的话当点的个数不算太多时,我们就可以省下大量的空间,同时又满足我们解决问题二、过程分析以存入数列{5、4、2、6、3、1}为例,值域范围取.原创 2021-07-24 16:00:53 · 311 阅读 · 2 评论 -
树状数组小结
文章目录前言一、树状数组的作用二、二进制拆分三、lowbit的使用四、基本使用1.单点修改(前缀和)2.区间查询(前缀和)3.区间修改(差分数组)4.单点查询(差分数组)5.区间查询+区间修改五、进阶使用1.求逆序对数2.区间求最值3.查询第K大/小的数4.二维树状数组前言对于一个数组,我们常见的操作为修改和查询,那么对于一个长度为N的数组来说,我们查询和修改一个点的时间复杂度为O(1),而对于修改并查询一个区间的复杂度则为O(N),如果对于区间的操作远多于对单点的操作,那么我们就引入了差分数组与前原创 2021-05-04 23:08:42 · 750 阅读 · 0 评论 -
线段树入门
文章目录前言(与树状数组比较)一、原理与构造1.原理2.4N空间的证明3.构造二、单点更新(初始版)三、区间查询(初始版)四、区间更新(绝对修改,相对修改)1.更新的类型2.lazy标志的作用3.pushdown的作用4.区间更新4.区间访问(改进版)前言(与树状数组比较)树状数组,一般用来处理前缀和问题,但我们后来介绍了如何用树状数组来求区间最值,我个人感觉树状数组跟基本线段树的功能已经很接近了,甚至在空间复杂度上更具优势;但(1)树状数组能解决的问题用线段树都能解决,而且思路更加的直接,(2)线原创 2021-05-12 00:22:18 · 478 阅读 · 0 评论