#13. 差分
差分
输入一个长度为 的整数序列。
接下来输入 个操作,每个操作包含三个整数 ,表示将序列中 之间的每个数加上 。
请你输出进行完所有操作后的序列。
输入格式
第一行包含两个整数 和 。
第二行包含 个整数,表示整数序列。
接下来 行,每行包含三个整数 ,表示一个操作。
输出格式
共一行,包含 个整数,表示最终序列。
数据范围
,
,
,
输入样例:
6 3
1 2 2 1 2 1
1 3 1
3 5 1
1 6 1
输出样例:
3 4 5 3 4 2
数据 1(样例结构+额外单点操作):基础正确性;卡“区间端点没算进去/单点区间处理错/累加顺序错”。
数据 2(n=1,多次操作):卡最小边界、差分数组越界、以及多次叠加是否正确。
数据 3(全 0 + 操作相互抵消):卡“忘记清零/前缀累加写错/操作叠加次序不影响但实现却受影响”的错误。
数据 4(覆盖两端 + (1,1) 与 (n,n)):重点卡 diff[r+1] 的处理(r=n 时是否越界)、以及 l=1 的边界。
数据 5(大量重叠 + 负 c + 极值 c=1000):卡重叠区间叠加、负数处理、以及结果范围不大但实现易错。
数据 6(n=50, m=2000 随机):综合卡各种实现细节;也能卡一些“写成 O(n*m) 虽然不一定 TLE 但容易暴露逻辑 bug”。
数据 7(n=1e5, m=1e5 结构化):强力卡复杂度:暴力逐操作更新区间会 TLE;正确应 O(n+m) 差分。
数据 8(n=1e5, m=1e5,频繁触边):强力卡边界与性能:大量 l=1 或 r=n,专门卡 r+1 越界、数组开小、I/O 慢等问题。
数据 9(n=1e5 单点操作满负载):卡“把区间当成左闭右开/端点不含/下标偏移(1-based 写成 0-based)”等;同时 m=1e5 压测性能。