(线段树,add懒标记)洛谷模板题
1|0原题链接:
2|0题目:
如题,已知一个数列,你需要进行下面两种操作:
1、将某区间每一个数加上 k。
2、求出某区间每一个数的和。
输入格式:
第一行包含两个整数 n,m,分别表示该数列数字的个数和操作的总个数。
第二行包含 n 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。
接下来 m 行每行包含 3 或 4 个整数,表示一个操作,具体如下:
1 x y k 表示将[x, y]区间内的数都加上k
2 x y 表示查询[x, y]区间内的总合
输出格式:
输出包含若干行整数,即为所有操作 2 的结果。
输入 #1 输出 #1
5 5 11
1 5 4 2 3 8
2 2 4 20
1 2 3 2
2 3 4
1 1 5 1
2 1 4
说明:
所有数据范围:1 ≤ n, m ≤ 1e5
答案在long long 范围内。
3|0思路:
这题为什么要用线段树来写呢,那就是因为区间修改,区间查询了吧,如果是区间修改,单点查询,
用树状数组他不香吗,那么线段树的区间修改又涉及到了懒标记的运用。
线段树的区间操作可以使用懒标记来优化时间复杂度,具体实现就得写一个pushdown函数,作用是将
懒标记的值传给他的儿子,这样就可以将查询前的n步操作化为一步,大大优化了时间复杂度,具体实现并
不复杂,重要的还是多练(我还是太菜了)。
__EOF__

本文作者:ReSakura
本文链接:https://www.cnblogs.com/ReSakura/p/16216304.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/ReSakura/p/16216304.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!