北京市海淀区昌运宫17号市政大厦十三层 13739830341 j9kefu@baidu.ag

公司新闻

连续地形修改为什么可以先只记区间两端:规则练习第21例

2026-11-09

一批操作都对连续格子加上同一个高度时,逐格反复修改会产生许多重复工作。也可以先把每次影响的开始与结束记下来,再沿地图累计恢复结果。

一维地图有十二格,每个操作给出起点l、终点r和增加量v,范围为左闭右开。差分表在l处加v,在r处减v,长度为十三;最后从左到右累加差分,与原高度相加得到新地形。

本例输入与约定

原高度[9, 6, 4, 9, 5, -2, -2, -2, 0, 2, 9, 3];每条操作为起点、终点、增加量。

完整计算记录

操作 | 操作后的十三项差分 [5, 9, -4] | [0, 0, 0, 0, 0, -4, 0, 0, 0, 4, 0, 0, 0] [6, 11, -1] | [0, 0, 0, 0, 0, -4, -1, 0, 0, 4, 0, 1, 0] [3, 8, 1] | [0, 0, 0, 1, 0, -4, -1, 0, -1, 4, 0, 1, 0] [11, 12, 5] | [0, 0, 0, 1, 0, -4, -1, 0, -1, 4, 0, 6, -5] [11, 12, 1] | [0, 0, 0, 1, 0, -4, -1, 0, -1, 4, 0, 7, -6] [11, 12, -1] | [0, 0, 0, 1, 0, -4, -1, 0, -1, 4, 0, 6, -5] [3, 5, 1] | [0, 0, 0, 2, 0, -5, -1, 0, -1, 4, 0, 6, -5] [7, 9, -1] | [0, 0, 0, 2, 0, -5, -1, -1, -1, 5, 0, 6, -5] [9, 12, -4] | [0, 0, 0, 2, 0, -5, -1, -1, -1, 1, 0, 6, -1] [5, 9, -4] | [0, 0, 0, 2, 0, -9, -1, -1, -1, 5, 0, 6, -1] 累计修改量:[0, 0, 0, 2, 2, -7, -8, -9, -10, -5, -5, 1] 最终高度:[9, 6, 4, 11, 7, -9, -10, -11, -10, -3, 4, 4]

表中编号仅用于识别本例的元素。读取一个结果时,应先核对它对应的输入、处理顺序和边界约定;布尔值表示条件是否成立,空集合表示没有符合要求的对象,不应把这些字段混成同一种数值。

复核方法与适用范围

终点所在格不受该次操作影响,但差分表必须能保存地图末尾位置十二的停止标记。每次加减成对出现,所以完整差分表总和为零;负数增加量表示下调,并非无效输入。

这种写法适合先收集修改、再统一恢复的批量流程。如果每次修改后都立即查询任意区间,需要另外安排数据结构;本例也没有高度上下限,限制值会改变叠加方式。

练习时可以先独立计算最前面的一步,再检查最后的整体不变量。若结论不同,应保留各步记录,定位第一处差异;只调整最终数字会掩盖规则理解上的问题。改变输入后也要重新演算,而不是照抄这一例的输出。