![](https://img-blog.csdnimg.cn/20210922115155623.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构 - 线段树
文章平均质量分 93
线段树
繁凡さん
只想当个小透明,就图一乐^q^,希望可以做出一些微小的贡献(目前研究方向:自然语言处理、深度学习中的对抗攻击、元学习,欢迎大佬们来与我交流^0^)
展开
-
线段树 从入门到进阶(超清晰,简单易懂)
目录第一部 概念引入第二部 简单(无pushdown)的线段树1、单点修改,区间查询2、区间修改,单点查询第三部 进阶线段树第四部 乘法(根号)线段树1、乘法线段树2、根号线段树模板题与代码:单点修改,区间查询:洛谷树状数组模板1区间修改,单点查询:洛谷树状数组模板2区间加法,洛谷线段树模板1区间乘法:洛谷线段树模板2区间根号,bzoj3211线段树是什么??线段树怎么写??如果你在考提高组前...转载 2020-02-12 11:08:57 · 77982 阅读 · 116 评论 -
BZOJ 2157 「国家集训队」旅游(树链剖分,线段树,边权转点权)【BZOJ计划】
【BZOJ修复计划 #20】BZOJ 2157 旅游 【国家集训队2011】原创 2021-09-22 18:41:38 · 1178 阅读 · 0 评论 -
BZOJ 2138 stone(霍尔定理推论,线段树)【BZOJ 修复工程】
【BZOJ修复计划 #7】BZOJ 2138 stone 【国家集训队】原创 2021-09-09 22:50:27 · 391 阅读 · 0 评论 -
POJ - 3321Apple Tree (线段树 + dfs序)
DescriptionThere is an apple tree outside of kaka’s house. Every autumn, a lot of apples will grow in the tree. Kaka likes apple very much, so he has been carefully nurturing the big apple tree.The tree has N forks which are connected by branches. Kaka .原创 2020-09-13 20:41:13 · 201 阅读 · 0 评论 -
CF1409E Two Platforms(线段树)
#include<cstdio>#include<algorithm>#include<iostream>#include<queue>#include<map>#include<cmath>#include<cstring>using namespace std;//typedef unsigned long long ll;typedef long long ll;typedef pair&l...原创 2020-09-08 20:03:58 · 275 阅读 · 0 评论 -
CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换,清晰易懂)
CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换)第一个第四个用线段树比较容易了。第二个和第三个都是在分成 2 ^ k 长度区间操作,比较容易想到线段树就是分成 n+1 层,每层都由 2 ^ k 长度区间构成。规定根节点为第 n 层,叶子节点为第 0 层。先看第三个swap:相当于交换线段树两个相邻区间,也就是相当于访问的时候直接访问另一个区间即可。可以用一个变量来记录以下是否需要改变访问的左右结点。比如当前swap的是第 k 层 ,那么只需要原创 2020-08-30 00:17:27 · 1001 阅读 · 0 评论 -
luogu P5142 区间方差(线段树、乘法逆元)
luogu P5142 区间方差本题要求维护模区间方差,很明显是一道数据结构题。我们化简方差公式:而平均数等于可以发现,我们只需要维护序列的区间和和区间平方和,就可以维护平均数和方差。区间和和区间平方和都满足结合律,因此可以用线段树维护。题目要求分数取模, 所以我们使用乘法逆元即可。最终答案为psum−sum2n%mod\frac {psum - sum^2}{n}\%modnpsum−sum2%mod=(psum∗nmod−2%mod+(sum∗nmod−2%mod)2)%mod原创 2020-08-26 10:16:35 · 376 阅读 · 1 评论 -
luogu P4085 [USACO17DEC]Haybale Feast(尺取法 + 线段树)
C、luogu P4085 [USACO17DEC]Haybale Feast题目链接直接开一个线段树维护即可。注意开ll线段树维护最大值。注意下标别写错了,比如tr[r]#include<cstdio>#include<algorithm>#include<iostream>using namespace std;typedef long long ll;const int N = 500007, INF = 0x3f3f3f3f;int n原创 2020-08-23 23:28:21 · 237 阅读 · 0 评论 -
【数据结构专题】线段树(一)
题目算法A、AcWing 1275. 最大数线段树求区间最大值B、SP1043 Can you answer these queries III线段树求最长连续子段和C、AcWing 246. 区间最大公约数求区间最大公约数这里写目录标题A、AcWing 1275. 最大数B、SP1043 Can you answer these queries IIIC、AcWing 246. 区间最大公约数本系列博客为AcWing的算法提高课的听课笔记,包含一些yxc老师...原创 2020-08-06 18:46:11 · 412 阅读 · 0 评论 -
解题报告:SP1043 GSS4 - Can you answer these queries III(GSS线段树八部曲之三)(区间最大连续子段和)
要注意输入的数据有坑,x可能大于y…我们可以模块化编程,使得整个代码井井有条函数可以重名,只要参数不一样就行。来源yxc老师的上课板书然后就是简单的代码了#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;typedef long long ll;const int N = 500007;int.原创 2020-08-06 16:37:07 · 219 阅读 · 0 评论 -
解题报告:SP2713 GSS4 - Can you answer these queries IV(GSS线段树八部曲之四)
x>yx>yx>y是真的艹。然后就是一道模板题了。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 500007;int n, m;ll a[N];struct Tree{ int l, r; ll sum;}tr[N * 4];void pushup(int p){ tr[p].sum = tr[p << 1.原创 2020-08-06 16:25:45 · 215 阅读 · 0 评论 -
【线段树合并】解题报告:luogu P4556雨天的尾巴 (树上对点差分 + 动态开点 + 线段树合并)线段树合并模板离线/在线详解
线段树合并模板原创 2020-06-13 12:08:38 · 398 阅读 · 0 评论 -
POJ 2482-Stars in Your Window(扫描线)
ACM-ICPC模板题目大意:给出n个星星的坐标,每个星星有一个亮度,给出一个矩形的长和宽,问矩形能包括的星星的最大亮度和(不包括边框)。假设每个星星都是矩形的最左下点,那么每一个星星都可以得到一个矩形,(x,y)->(x,y,x+w,y+h),这个矩形的两条高边的值也就是星星的亮度k和-k,对于不同的矩形来说,如果高线出现重合部分,那么也就是说这两个星是可以出现在同一个矩形中的,扫描线求出可能出现的最大的亮度和。注意:因为不包括边框,所以扫描时应先扫描值为负的高线,并且仅对值为正的高线统计最原创 2020-06-12 22:52:36 · 306 阅读 · 0 评论 -
模板 - 线段树
ACM-ICPC模板懒惰标记一行序列,每次操作把一个区间里的每个数都加上一个数,或者查询一个区间的和。typedef long long ll;typedef pair<int,int> PII;const int INF = 0x3f3f3f3f;const int N = 1e5+7;const int M = 2007;struct SegmentTree{ int l,r; ll sum;//总和 ll lz_add;//增量延迟标记原创 2020-06-10 11:16:56 · 1522 阅读 · 1 评论 -
0x43.数据结构进阶 - 线段树
目录线段树的建树线段树的单点修改线段树的区间查询POJ3486A Simple Problem with Integers声明: 本系列博客是《算法竞赛进阶指南》+《算法竞赛入门经典》+《挑战程序设计竞赛》的学习笔记,主要是因为我三本都买了 按照《算法竞赛进阶指南》的目录顺序学习,包含书中的少部分重要知识点、例题解题报告及我个人的学习心得和对该算法的补充拓展,仅用于学习交流和复习,无任何商业用途。博客中部分内容来源于书本和网络(我尽量减少书中引用),由我个人整理总结(习题和代码可全都是我自己敲哒)部分原创 2020-06-08 17:19:14 · 677 阅读 · 0 评论 -
P3924 康娜的线段树(マジやばくね)(线段树、期望、前缀和)难度⭐⭐⭐★
P3924 康娜的线段树我觉得挺难的,マ(ma)ジ(ji)や(ya)ば(ba)く(ku)ね(ne)(不得了了)知道康娜的应该都懂题解 P3924 【康娜的线段树】#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<que...原创 2020-04-07 17:59:34 · 320 阅读 · 0 评论 -
P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★
P1083 借教室标记永久化线段树很典型的区间修改问题,先输入赋值建树(这就是最典型的线段树呀,别忘了),然后修改这里问的是是否有足够的空教室,所以线段树中 min 代表的是当前区间内最小的剩余教室量。一般的线段树使用lazytag标记,每次都需要往下修改到根节点,本题中1e6有可能被卡常超时,所以使用标记永久化的线段树,即不用lazytag,改用used表示当前区间所使用的教室数,更新...原创 2020-03-19 22:31:11 · 243 阅读 · 0 评论 -
P1276 校门外的树(增强版)(线段树)(校门三部曲)难度⭐⭐⭐
校门三部曲,总算完结了!完结散花!第一部P1047 校门外的树(线段树优化)难度⭐⭐第二部P1276 校门外的树(增强版)第三部P5568 [SDOI2008]校门外的区间(离散数学应用+线段树+开闭区间处理)难度⭐⭐⭐⭐★因为本题只需要最后询问一次即可,所以不需要一直更新答案建两棵线段树(两颗最好用结构体建树比较方便)种树只在第一棵树种,第一棵树是树和苗的总和,第二颗树只有树...原创 2020-03-18 20:25:30 · 559 阅读 · 1 评论 -
实现选择开区间或闭区间的操作,输出开区间或闭区间 详解(线段树运用)
该操作源于此题目P5568 [SDOI2008]校门外的区间(离散数学应用+线段树+开闭区间处理)难度⭐⭐⭐⭐★题目中输入的区间有开区间也有闭区间,输出的答案也是有开区间或闭区间,所以这里就需要特殊的开闭区间操作来处理。详细规则及解释:代码实现输出U [1,5]D [3,3]S [2,4]C (1,5)I (2,3]输入(2,3)注意这里的输入细节int main...原创 2020-03-18 11:57:00 · 971 阅读 · 0 评论 -
P5568 [SDOI2008]校门外的区间(离散数学应用+线段树+开闭区间处理)(校门三部曲)难度⭐⭐⭐⭐
P5568 [SDOI2008]校门外的区间U [1,5]D [3,3]S [2,4]C (1,5)I (2,3](2,3)0≤a,b≤65535,M≤700000 \leq a,b \leq 65535, M \leq 700000≤a,b≤65535,M≤70000转化成线段树的区间覆盖+翻转问题用线段树维护当前区间并且维护两个标记cov,tagcov,tag,分别代...原创 2020-03-17 23:28:48 · 558 阅读 · 0 评论 -
P1047 校门外的树(线段树优化)(校门三部曲)难度⭐⭐
题目链接线段树优化O(logN+N)O(logN+N)O(logN+N),本题数据太小差别不大需要注意的是本题中L是总长度,带到代码里是从1开始的n个点,所以建树的时候应该范围应该是1~n+1,所以修改区间的时候。#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll N=1e5+7...原创 2020-03-11 22:40:59 · 411 阅读 · 3 评论 -
poj 2352 Stars 线段树(先建后查/边建边查)/树状数组三种方法思路详解,带你深入了解线段树难度⭐⭐⭐★
poj 2352 Stars目录poj 2352 Stars1.树状数组2.线段树,先建树后查找3.线段树,边建树边查找DescriptionAstronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. ...原创 2020-03-08 17:12:20 · 347 阅读 · 0 评论 -
线段树 (经典题目合集)
P3372 【模板】线段树 1#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll N=1e5+7;const ll mod=2147483647;ll n,m;struct node{ ll l,r,sum,lz;}tree[N];ll arr[N];void b...原创 2020-02-11 22:28:47 · 1381 阅读 · 0 评论