二维/多维差分与哈希

共 24 题
#

1. "最少箭引爆气球"如何用排序+贪心而非差分

A 不需要排序
B 每支箭只能引爆一个气球
C 按右端点排序后贪心,重叠区间共用一支箭,等价于求最大不相交区间数 ✓ 正确答案
D 必须用差分计数
#

2. 三维前缀和在张量统计中的递推展开与项数复杂度

A 三维前缀和只有 3 项
B 查询需 O(n)
C 三维无法用容斥
D 用容斥展开,D 维前缀和包含 2^D 项,三维 8 项二维 4 项 ✓ 正确答案
#

3. 为何异或前缀和与加法前缀和能用同一套哈希计数思路

A 两者根本不相似
B 异或不可逆,无法用前缀
C 异或前缀不能用哈希
D 两者都满足"区间值=前缀差",运算可逆,故用同一套哈希计数框架 ✓ 正确答案
#

4. 二维前缀和如何 O(1) 求任意子矩阵和及边界累加公式

A 子矩阵和 = p[r2][c2]-p[r1-1][c2]-p[r2][c1-1]+p[r1-1][c1-1],O(1) 查询 ✓ 正确答案
B 查询子矩阵无需容斥
C 子矩阵和需要 O(n) 累加
D 二维前缀和只有一种形式
#

5. 前缀和+哈希统计"子数组和为 0/K/给定值"的完整框架

A 初始 map[0] 不需要设置
B 遍历累加 map[pre-target],初始 map[0]=1,目标变为 0/K/整除只需改 target 或取模 ✓ 正确答案
C 只能统计和为 0
D 每个目标值需要完全不同的算法
#

6. 在"矩阵区域和查询+更新"中差分与树状数组的取舍

A 差分可在线查询任意子矩阵和
B 离线批量更新求点值用差分;在线更新+在线查询用二维树状数组/线段树 ✓ 正确答案
C 两者完全等价
D 树状数组总比差分差
#

7. 连续子数组异或和为 K(前缀 XOR + 哈希)的实现

A 用前缀异或 + 哈希,遍历累加 map[pre^K],与加法"和为 K"同构,O(n) ✓ 正确答案
B 异或无法用前缀
C 需要枚举所有子数组
D 前缀异或初始为 1
#

8. 二维差分与二维前缀和的复合使用顺序(先差分后还原再前缀)

A 顺序无关紧要
B 先差分更新(四角标记),再做一次前缀和还原点值,需要查询时再构建前缀和 ✓ 正确答案
C 先做前缀和再做差分
D 差分还原用排序
#

9. 前缀和结果可能为负/很大时哈希键如何选取

A 哈希键必须非负
B 直接用前缀和值作键(可能为负),用 long 避免溢出,或取模后作键 ✓ 正确答案
C 大值必须压缩
D 负值不能作哈希键
#

10. 在流式中维护前缀和哈希以回答滚动查询的设计

A 流式数据无法用前缀和
B 每读入元素更新 pre 并插入 map,实时查询 pre-target,滚动时淘汰旧前缀 ✓ 正确答案
C 前缀和哈希只适用于离线
D 需要每次重新扫描
#

11. 多个约束(如和为 K 且长度为 L)如何组合前缀结构

A 只能处理一个约束
B 多约束无法用前缀
C 固定长度用滑动窗口、固定和用前缀哈希,或把约束编码进哈希键组合处理 ✓ 正确答案
D 必须用动态规划
#

12. 二维差分如何对矩形区域整体加减(四角标记法)

A 四角标记是 O(n) 操作
B 四角标记后无需还原
C 只需两个角标记
D 矩形加 v 做四角标记(两加两减),再做一次二维前缀和还原 ✓ 正确答案
#

13. 区间合并(56)与差分的本质区别中合并 vs 计数

A 合并用差分,计数用排序
B 合并求并集形状用排序贪心,差分求覆盖层数用端点标记+前缀和 ✓ 正确答案
C 差分也能输出合并区间
D 两者完全相同
#

14. 在有限网格上差分溢出与取模的处理

A 差分不会溢出
B 取模不需要归一化
C 用 long 防溢出,取模时负余数转正,边界标记越界时扩容数组或跳过 ✓ 正确答案
D 边界标记越界无害
#

15. 当区间端点极大时如何离散化后再做差分

A 必须开大数组
B 收集所有端点排序去重离散化,在离散化坐标上差分,相邻离散点间覆盖不变 ✓ 正确答案
C 离散化会破坏差分
D 区间端点需要放大
#

16. 网格题下标从 0/1 起对差分四角标记公式的影响

A 下标约定不影响数组大小
B 从 0 起就不能用四角标记
C 公式形态一致,差异只在"r2+1/c2+1 越界"及数组扩容处理 ✓ 正确答案
D 从 1 起四角标记公式不同
#

17. 航班预订统计(1109)如何是经典一维差分模板题

A 差分无法处理座位统计
B 必须用线段树
C 每个区间加 v 用 d[l]+=v、d[r+1]-=v,最后前缀和还原,是一维差分模板题 ✓ 正确答案
D 需要遍历区间内每个元素
#

18. 前缀和结合单调结构(如前缀和+有序容器)求区间个数

A 哈希表就能处理范围条件
B 有序容器只能处理精确匹配
C 前缀和无法计数
D 用有序容器(TreeMap/Fenwick)支持"统计前缀 ≤ 某值"的范围查询,O(n log n) ✓ 正确答案
#

19. 扫描线(事件排序)与差分的等价及何时选哪种

A 扫描线比差分更准确
B 两者完全不同
C 差分把区间拆成端点事件,扫描线排序事件再处理,本质等价;值域小用差分、值域大用扫描线 ✓ 正确答案
D 差分无法表示区间事件
#

20. 统计"平衡子数组"(0 与 1 数量相等)的前缀差技巧

A 把 0 当 -1、1 当 +1,则"0 与 1 相等"退化为"和为 0",用前缀和+哈希统计 ✓ 正确答案
B 前缀和无法处理平衡
C 必须枚举所有子数组
D 0 只能当 0
#

21. 多区间覆盖最大值(求被覆盖最多层数)的差分做法

A 差分无法求覆盖层数
B 最大值等于区间总数
C 差分端点标记后前缀和扫描,每点层数取最大,即被覆盖最多层数 ✓ 正确答案
D 需要枚举所有区间组合
#

22. 如何用二维差分处理"被多个矩形覆盖次数"的网格题

A 需要遍历矩形内每个点标记
B 二维差分无法处理矩形覆盖
C 每个矩形四角标记后做二维前缀和,得到每个点被覆盖次数再统计 ✓ 正确答案
D 四角标记后无需还原
#

23. 差分思想在树上路径"对路径上所有点 +v"的树上差分

A 端点标记 u、v 加 v,lca 与 parent(lca) 减 v,一次 DFS 子树和还原,O(1) 标记 ✓ 正确答案
B 需要遍历路径上每个点
C 树上差分无法用 lca
D 只有边差分没有点差分
#

24. 拼车/会议室类"区间重叠计数"如何用差分或扫描线

A 只需排序无需区间
B 差分无法处理重叠计数
C 需要枚举所有区间对
D 区间拆成 +1/-1 事件,差分或扫描线求每时刻重叠数,检查是否超容量 ✓ 正确答案