线段树

欢迎在评论区留言和订阅专栏!

线段树是一个和树状数组差不多的数据结构,下面我就来讲一讲。

1.简介

线段树树状数组都是在线算法(前面讲过),与树状数组功能一样,是一种可以快速区间操作的算法

线段树一共有4个步骤,分别是:建树、pushdown、指定点加值和查询,并且附有main函数。

2.代码

1.建树

int n,m,sum[100005],lazy[100005],a[100005];
//递归建树
void built(int node, int start, int end){
	if (start == end) sum[node] = a[start];
    else{
    	int mid = (start + end) / 2;
        //二分
        built(node*2+1, start, mid);
        built(node*2+2, mid+1, end);
        
        sum[node] = sum[node*2+1] + sum[node*2+2];
    }
}

2.pushdown

void pushdown(int node, int start, int end){
	if (lazy[node] != 0){
    	int mid = (start+end)/2;
        sum[node*2+1] += lazy[node] * (mid-start+1);
        sum[node*2+2] += lazynode] * (end-mid);
        lazy[node*2+1] += lazy[node];
        lazy[node*2+2] += lazy[node];
        lazy[node] = 0;
	}
}

3.指定点加值

void add(int node, i

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

c++算法大全 文章被收录于专栏

本专栏收集了c++大部分基础算法,附有简介和代码。

全部评论
用了挺多的二分呀!
2 回复 分享
发布于 08-28 17:54 北京
lazy数组是干啥的呀
点赞 回复 分享
发布于 09-02 11:33 北京
二分是用来查询左节点和右节点。左节点是2n+1, 右节点是2n+2。
点赞 回复 分享
发布于 08-28 19:11 北京

相关推荐

09-19 15:30
已编辑
小红书_前端开发(实习员工)
从8月4日开始秋招已经一个半月了,还是一个意向都没有qwq 是不是发面经的力度不够大,攒的rp不够多啊帆软全部流程走完之后已经泡了半个月了,感觉泡不出来了。今天一次性发出来化作春泥更护花吧,希望能帮到有需要的牛油---2025.8.21  一面 50min小程序中,为什么会出现滚动穿透的情况?为什么小程序多发而传统H5少见?Hybrid开发中,同一套代码在不同的端中,怎么转换成原生的渲染?了解过RN吗?有没有遇到过请求数据量很大的情况,怎么解决?有没有遇到过浏览器内存过大,怎么解决?如果你现在不会,但你要去解决,你会用什么流程(提示,工具,什么导致过大)为什么很多大企业的网站的网络请求,是往不同的域名请求的?这样做有什么好处?讲一讲浏览器缓存一般现在的网站,我们浏览的时候会命中强缓存还是协商缓存?为什么?如果强缓存过期之前,就进行了版本的更新,怎么强制更新缓存?为什么浮点数相加会出现不相等的问题,比如0.1+0.2 !=0.3怎么学习前端的?会经常去看国外的一些论坛吗?爬楼梯。口述思路。---2025.8.27  二面 60min甚至没让我自我介绍,也没让我介绍项目,就直接开始纯对题库问问题,讲死我了。怎么利用语义化标签进行页面内容优化微信小程序兼容性问题有没有遇到过把项目做成微服务,怎么做防范xss, csrf微信二次分享失效vue2 vue3响应式区别Vuex vs. PiniaFlex vs. Grid有没有用过ts,有什么好处,怎么做防御性编程团队代码质量保证,和cicd结合怎么做---2025.9.1 帆软- 三面 55min一直以为是二面(因为一面完之后发现状态还是待评估,没有更新,以为是挂了)结果最后反问的时候面试官说他不是搞前端的,而且根本没问前端的问题,才发现……这好像是三面了卧槽自我介绍,1到2分钟(太长了直接被无情被打断了)手撕:判断一个正整数是否是2的N次幂,怎么做 =》 二进制,位运算给一个数组代表每一步的步长,判断是否能到达对岸。哪里人,未来想在哪里工作,有没有考虑过回家为什么本科选水利这个专业,后面为什么跨考为什么选择前端未来三到五年规划你对wlb的看法。并介绍了帆软每周40小时的工时,问能不能接受你平时周末除了工作和学习,还喜欢做什么你喜欢你在小红书的业务吗,如果小红书给你offer会不会优先选择现在在哪实习,有转正机会吗为什么选帆软,对帆软的印象反问建议 =》 基础。还需要加强(狠狠吃了本科非科班的亏,但确实对这种考基础的题目无可奈何。)----一些黑暗深邃幻想:不知道牛客上有多少正在/曾经/将要秋招的牛油和我一样,是非科班出身。本科的4年就像案底一样,不仅在读时给了我许许多多的痛苦,一个灰色晦暗的未来,还会在我好不容易逃离后时不时跳出来背刺我一下 —— 在一次次简历筛选时的质疑声中,在一次次终面的基础询问时,在一次次hr面的无声皱眉中。每次为此感到痛苦时,我就会想到秦时明月里的红莲公主,还有她的一句台词:“我已经做到了那么多不可能的事情,还有什么事情是我做不到的?”愿我们多年后回首望去,发现当年那最深最黑暗的地狱,如今也不过是些许风霜罢了。共勉!
牛客解忧铺
点赞 评论 收藏
分享
评论
5
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务