#12762. 能量波动记录器
能量波动记录器
能量波动记录器
题目背景
某实验室正在研究一种特殊的 能量轨道系统。
在这条轨道上均匀分布着 n 个观测点,每个观测点会记录当前的能量值。
初始时,所有观测点的能量值均为 0。
研究过程中,系统会记录若干次 能量波动事件,每一次波动都会对一段连续的轨道产生影响。
你的任务是计算所有事件发生后,每个观测点最终的能量值。
题目描述
给定一条长度为 n 的轨道以及 m 次能量波动事件。
每次事件用三个整数 (l, r, v) 表示:
从第 l 个观测点到第 r 个观测点(包含两端),
这一整段轨道上的能量值 **都会增加 v**。
所有事件按输入顺序执行。
当所有事件执行结束后,请输出每个观测点的最终能量值。
输入格式
第一行输入两个整数:
n m
表示观测点数量和能量波动事件数量。
接下来 m 行,每行输入三个整数:
l r v
表示一次能量波动事件。
输出格式
输出一行 n 个整数:
a1 a2 ... an
其中 ai 表示第 i 个观测点最终的能量值。
相邻数字之间用一个空格分隔。
数据范围
1 ≤ n ≤ 200000
1 ≤ m ≤ 200000
1 ≤ l ≤ r ≤ n
-10^9 ≤ v ≤ 10^9
样例输入
6 3
2 5 3
1 3 2
4 6 1
样例输出
2 5 5 4 4 1
样例说明
初始状态:
0 0 0 0 0 0
第 1 次事件 (2,5,3):
0 3 3 3 3 0
第 2 次事件 (1,3,2):
2 5 5 3 3 0
第 3 次事件 (4,6,1):
2 5 5 4 4 1
因此最终结果为:
2 5 5 4 4 1
提示
如果直接对区间 [l,r] 逐个修改,时间复杂度可能达到 O(n × m),在本题数据范围下会超时。
可以考虑使用 差分数组 来优化区间修改,使每次操作只需要 O(1) 时间,再通过一次前缀和恢复最终数组。