差分:多次施工如何快速登记
同一段路会被反复修改。先看见逐格登记的代价,再学会只在两端做记号。
建议先完成前缀和,并会使用循环和数组 · 调整学习起点 →
同一段路要改十万次
这不是考试。我们想了解你现在会怎样登记这些修改。
一条路有 100000 个位置。接下来有 100000 次施工,每次把连续的一段都加上同一个数。最后要知道每个位置的总量。
这里只记录选课起点,不判断对错;选择保存在本浏览器中。
每一格都改一遍,会写多少次?
下面 5 个位置。如果把整段 [1,5] 都加上同一个数,而且这样的施工要做 100000 次,逐格修改一共要写多少次?
加进去的数,要在哪里停下来?
路有 5 格,编号 1 到 5。现在只做一次施工:给第 2 格到第 4 格各加 1。差分只改两个位置。
从左往右,把记号累加起来。
下表是差分记号 d。d[1]=0,d[2]=3,d[5]=-3。请填出还原后每一格的值。s[0] 固定为 0。
代码里,抵消写在 r 还是 r+1?
一次施工把 [l,r] 增加 v。数组 d 比道路多留一格,用来放下可能出现的 r+1。
r = n 时,记号写到哪里?
路只有 5 格,这次施工是 [1,5]。抵消不能写进第 5 格本身。另外,很多次 10⁹ 的增量叠在一起,普通 int 可能放不下。
引导实验已完成。
下一步,在没有引导的新题中独立应用。完成引导不等于独立掌握。
选择编程任务 ↓把发现,变成独立解决问题的能力。
你可以先浏览实验内容。登录并验证邮箱后,即可验证答案并保存学习进度。