
线段树
CCCCDEV_CCCC
志在四方少年,羡慕南飞的雁
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2357 守墓人
2357 守墓人提炼题目…给定一个数列,给定若干个操作,查询修改等线段树的模板题?对线段树的模板题,只不过要多维护一个主墓的风水值,自从我学习了线段树,妈妈在也不用担心我的代码不过百了#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int SIZE=2e5+5;int n,m;int t[SIZE];int lazys[SIZE],lazy原创 2021-08-10 14:43:47 · 109 阅读 · 0 评论 -
1276 校门外的树(增强版)
1276 校门外的树(增强版)我是来练习线段树的菜鸡这个题在2月份就做过,可惜那个时候的我是个辣鸡,整天混日子…好了话不多说了提炼一下题目给定一个长度为l的数列,在给定n个操作,1 l r代表将l ~ r之间的数全部清空,2 l r代表将l ~ r之间全部恢复感觉还是挺水的不过我感觉这个题评为橙色有点草率了在这道题里面,体现出了懒标记的作用,比如我们要操作这个节点,标记这个节点砍掉种上或者砍掉又种上(当然在其他的题目中就可能是求和求积等),因为线段树存的是整个区间,所以也得需要对儿子进行下传原创 2021-08-10 13:34:23 · 197 阅读 · 0 评论 -
1198 最大数
1198 最大数原创 2021-08-06 12:58:53 · 103 阅读 · 0 评论 -
1547 区间和
1547 区间和给定两个操作,一个是单点修改,一个是区间求和#include<cstdio>using namespace std;const int N=600001;long long n,m,c[N]={0},a,b;bool k;int qread() { char ch=getchar(); int x=0,f=1; while (ch>'9'||ch<'0') { if(ch=='-') f=-1; ch=getchar(); } whil原创 2021-08-09 19:09:18 · 190 阅读 · 0 评论 -
1548 A Simple Problem with Integers
1548 A Simple Problem with Integers嗯?是一个模板题,用来蹭文章量#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;int a[maxn+2];struct tree{ int l,r;//维护区间的范围 long long pre,add;//pre节点的值 add懒坐标 }t[4*maxn+2];void bulid(int p,i原创 2021-08-09 18:54:27 · 213 阅读 · 0 评论 -
3373 线段树2
3373 线段树2听说这个题是一个假的模板题,我这个菜鸡看后非常的惊讶这个题目要求有三种操作,两种是不同的在线修改,还有一个是在查询取模后的结果,这两种操作又是区间乘法又是区间加法我们可以惊喜的发现这两种操作对于取模运算都是自由的,但是这么大的数据,我们需要思考何用线段树优雅的做这道题可以想象,线段树有一个非常好的功能是lazy标记,只需要计算出确确实实访问区间的真实值,其他的保存在lazytag里面,这样可以近似O(n logn)可以发现,一个lazytag不够用,那就用两个,一个表示加法一个表原创 2021-08-09 18:38:50 · 125 阅读 · 0 评论 -
线段树
线段树终于…解放了经过了漫长的一个月的备战,总体来说还算可以下面切入正题:线段树,是一种基于分治思想的二叉树,它有如下性质:1.线段树的每一个节点都代表一个区间2.线段树的根节点是唯一一个,代表的区间是整个统计的范围3.线段树的每一个叶子节点只代表一个数4.对于每一个线段树的节点,左儿子代表左区间,右二子代表右区间所以线段树一定是一个完全二叉树,所以我们可以按照父亲儿子的表示进行表示空间:一共n个数,那么需要4n+1个空间,因为因为最后一个区间是n,那么总共的树的大小就是2n-1还要空出原创 2021-07-01 18:17:24 · 140 阅读 · 0 评论