解题思路
相邻两个复盘窗口只错开一小时,因此上调量 di=ui−vi 沿步长 w 的链被模 q 关系钉死。每个小时最优上调量都可以取在 0∼q−1。
- 记第 p 个窗口的原和模数为 sp。相邻窗口给出 dp+w≡dp+sp−sp+1(modq)。给定链起点的上调量 x,后面每一小时都唯一确定。
- 第一个窗口还要求前 w 个起点上调量之和 ≡−s1(modq)。
- 对每条链预处理选 x 的总费用,再做最小费用的循环卷积(或直接 O(wq2) 递推),得到满足模约束的最小总上调量。窗长为 1 或等于 k 时可以直接算。
复杂度分析