算法笔记 / A LEAF IN THE GARDEN

几何理解

算法笔记 · 数据结构 / 分块 / 莫队。来自 Daily Learning 的学习笔记。

理解

概念映射

原始概念映射概念
状态空间序列的所有区间(l,r)(l, r) 平面,定义域为 [1,n]×[1,n][1,n]\times [1,n] 的整数格点
状态函数区间 (l,r)(l, r) 内的统计量二元离散函数 f(l,r)f(l, r)
目标点集所有询问点集 Q={(li,ri)}Q=\{(l_i, r_i)\}
计算量时间复杂度点集路径曼哈顿距离
移动算子移动函数ff 的偏导
include(--l)Δl−\Delta_{l^-}
include(++r)Δr+\Delta_{r^+}
exclude(l++)Δl+\Delta_{l^+}
exclude(r--)Δr−\Delta_{r^-}

离散线积分

  • 将点集 QQ 串接成一条有向路径
  • 沿路径对 Δ\Delta 做线积分
  • 到达某点 QiQ_i 时,Δ\Delta 的线积分值即为 f(Qi)f(Q_i)

减少投影

路线投影到 ll 轴或 rr 轴后,重叠部分为重复计算,应尽量减少

  • 分块:约束 ll 方向抖动范围到 n\sqrt{n}
  • 排序:使 rr 方向块内单调上升
  • 奇偶优化:蛇形路线 rr 跨块时减少重复计算

旅行商问题(TSP)

上述理解下,莫队算法相当于旅行商问题,遍历 QQ 中的所有点,路径代价为曼哈顿距离。

普通莫队

暴力求解

一团乱麻,在平面上乱飞

l r 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 Brute force (given order)

普通莫队

块内 ZZ 字形走位,块间转移时有无效路径

l r 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 Block 0 Block 1 Block 2 1 2 3 4 5 6 7 8 9 Ordinary Mo (all blocks: r ↗)

奇偶排序

基本不走回头路

l r 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 Blk0 (even) Blk1 (odd) Blk2 (even) 1 2 3 4 5 6 7 8 9 Mo with odd‑even (zig‑zag)

带修莫队

普通带修

r t l 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 9 A E B C D F Mo with Update (normal order)

奇偶排序

r t l 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 9 A C B E D F Mo with Update & odd‑even order