随机化与近似算法

共 66 题
#

1. 反哈希攻击(故意构造碰撞)在竞赛中的防御策略

A 随机化基数并配合大素数模数使攻击者无法预先构造碰撞对 ✓ 正确答案
B 使用固定的大素数模数即可完全杜绝碰撞
C 自然溢出在任何情况下都比大素数模更安全
D 双哈希后碰撞概率与单哈希完全相同
#

2. 树状数组上二分(find by prefix sum)的实现中利用二进制提升从高位到低位累加,O(log n) 找前缀和首次 ≥ k 的位置

A 必须对树状数组做普通二分查找才能得到 O(log n)
B 从高位到低位逐位尝试累加,复杂度 O(log n) ✓ 正确答案
C 该操作复杂度为 O(n log n)
D 只能查找最大值,不能查找前缀和
#

3. 树状数组查询前缀和复杂度为 O(log n) 的位运算来源

A 每执行一次 i -= lowbit(i) 消去二进制中一个 1,最多 O(log n) 次 ✓ 正确答案
B 每次查询要遍历所有节点
C 树状数组使用二分查找
D 查询与 lowbit 无关
#

4. Freivalds 算法如何用随机化在 O(n²) 验证矩阵乘法

A O(n³)
B O(n²) ✓ 正确答案
C O(n log n)
D O(n)
#

5. Rabin-Karp 如何利用滚动哈希在 O(n) 找模式串

A O(n+m) ✓ 正确答案
B O(n·m)
C O(n³)
D O(m)
#

6. 哈希随机化在"子树同构/同形"判定中的运用

A 降低不同结构哈希碰撞的概率 ✓ 正确答案
B 提高时间复杂度
C 使哈希结果与树结构无关
D 增加代码量
#

7. 快速选择(QuickSelect)期望 O(n) 与最坏 O(n²) 的来源

A 每次 pivot 都让两侧均衡
B 使用了递归
C 需要排序整个数组
D 每次 pivot 都选到极端元素导致每层只缩小 1 ✓ 正确答案
#

8. 线段树 Beats(区间历史最值/区间取 min)的复杂度证明中势能函数 Φ 在 chmin 操作下的递减性,总复杂度 O(n log² n)

A 递推关系 T(n)=T(n/2)+O(1)
B 势能函数 Φ 在 chmin 下递减,总势能下降有界 ✓ 正确答案
C 二分查找
D 随机化选点
#

9. 为何莫队按块(√n)排序端点能均摊每次移动成本

A O(n²)
B O(n√n) ✓ 正确答案
C O(n log n)
D O(n)
#

10. 主席树求静态数组区间第 K 小(值域线段树历史版本)

A O(1)
B O(n)
C O(n log n)
D O(log n) ✓ 正确答案
#

11. 块内是否排序(维护有序)对查询类型的取舍

A 块内不排序,直接暴力
B 每次查询全数组扫描
C 块内维护有序,查询时二分 ✓ 正确答案
D 不用分块
#

12. 如何用大素数模 + 自然溢出做哈希及二者的风险差异

A 两者风险完全相同
B 大素数模一定不会碰撞
C 自然溢出一定不会碰撞
D 自然溢出在对抗性输入下可能被构造碰撞,风险更高 ✓ 正确答案
#

13. 树状数组(Fenwick)lowbit 操作的原理与单点/区间更新

A i -= lowbit(i)
B i = i * 2
C i 不变
D i += lowbit(i) ✓ 正确答案
#

14. 随机化快排/快速选择为何随机选 pivot 能避免最坏退化

A 让算法变慢
B 减少比较次数到 O(n)
C 让排序结果随机
D 消除针对固定 pivot 的对抗输入,使期望复杂度有保证 ✓ 正确答案
#

15. 集合覆盖贪心算法的对数近似比 (H(n)) 来源

A 2
B 1
C n
D H(n)(调和数,约 ln n) ✓ 正确答案
#

16. 动态开点线段树如何应对值域巨大(如 10^9)的区间

A O(操作次数 × log 值域) ✓ 正确答案
B O(值域)
C O(1)
D O(操作次数)
#

17. 双哈希(double hashing)为何大幅降低碰撞到可忽略

A 双哈希只用一个模数
B 双哈希一定不碰撞
C 双哈希速度更快
D 两个独立哈希同时碰撞的概率是各自概率的乘积 ✓ 正确答案
#

18. 在在线广告/推荐中近似与采样如何替代精确计算

A 近似算法结果一定错误
B 精确计算结果不可用
C 采样无需维护
D 精确计算太慢或成本过高,可用误差换延迟 ✓ 正确答案
#

19. 块大小取 n/√m 还是 √n 对常数与实际速度的影响

A n
B n/√m ✓ 正确答案
C 1
D
#

20. 如何向面试官说明某问题"只能近似且已知近似界"

A 该问题在 P≠NP 假设下无多项式精确算法,且已知近似比上下界 ✓ 正确答案
B 该问题涉及大数据
C 该问题代码复杂
D 该问题无人研究
#

21. 如何用"大块整体、小块暴力"证明分块复杂度

A 每次操作全数组扫描
B 块大小取 n
C 不做任何预处理
D 块大小取 √n,使整块数与散块长度均为 √n ✓ 正确答案
#

22. 如何用两个 BIT 实现区间加+区间和查询

A O(√n)
B O(n)
C O(log n) ✓ 正确答案
D O(1)
#

23. 如何用随机化哈希做"集合相等"的快速概率判断

A 精确算法
B 概率算法(误差可忽略) ✓ 正确答案
C 确定性贪心
D 动态规划
#

24. 如何用随机算法近似中位数(分组中位的中位)

A 期望 O(n)
B 最坏 O(n) 保证 ✓ 正确答案
C 代码更简单
D 不需要递归
#

25. 字符串哈希(多项式滚动哈希)的取模与冲突概率

A 使用小模数
B 大素数模 + 随机基数,或双哈希 ✓ 正确答案
C 固定基数
D 不使用哈希
#

26. 权值线段树 + 离散化求第 K 小/逆序对

A O(n log n) ✓ 正确答案
B O(n²)
C O(n)
D O(log n)
#

27. 莫队算法如何通过最优区间移动顺序把询问降到 O(n√n)

A 每次查询都 O(1)
B 使用分治
C 预处理所有答案
D 通过对查询排序使指针移动局域化,总移动 O(n√n) ✓ 正确答案
#

28. 蒙特卡洛(概率正确)与拉斯维加斯(必定正确但时间随机)区别

A 蒙特卡洛结果一定正确
B 拉斯维加斯结果一定正确,但时间随机 ✓ 正确答案
C 拉斯维加斯可能出错
D 两者完全相同
#

29. 近似算法中"近似比"的严格定义(≤ / ≥ OPT 的方向)

A 近似解成本与 OPT 无关
B 近似解成本 C 满足 C ≥ α·OPT
C 近似解成本 C 满足 C ≤ α·OPT ✓ 正确答案
D α 必须大于 n
#

30. 遗传/蚁群等元启发式与大问题规模的实际价值

A 在合理时间内得到较优可行解 ✓ 正确答案
B 保证精确最优
C 提供严格近似比
D 降低问题规模
#

31. 随机数质量(PRNG)对算法可复现性的影响

A 使用不可复现的硬件随机数
B 不使用随机数
C 固定 PRNG 的种子 ✓ 正确答案
D 增大随机数范围
#

32. 面试中如何论证随机化算法的期望复杂度与可靠性

A 只说"一般不会错"
B 保证零错误
C 量化错误概率并用重复/独立性将其降到可忽略 ✓ 正确答案
D 不讨论概率
#

33. 顶点覆盖的 2-近似算法(选边两端)为何保证 ≤2·OPT

A 所有边都覆盖两次
B 覆盖集一定最优
C 选出的边构成极大匹配,OPT ≥ 匹配大小 ✓ 正确答案
D 图是二分图
#

34. 为何模数选大素数(如 10^9+7 / 10^9+9)较稳妥

A 模空间大、与基数互质、存在乘法逆元 ✓ 正确答案
B 它是偶数
C 它最小
D 它不可逆
#

35. 负载均衡(任务分配到机器)的贪心/最优拟合近似

A 1
B 2
C n
D 4/3 - 1/(3m) ✓ 正确答案
#

36. Hill Climbing 与随机重启(random restart)的关系

A 保证全局最优
B 消除概率
C 加快单次爬山
D 从多个随机起点爬山,提高找到更好解的概率 ✓ 正确答案
#

37. Metropolis 准则中温度衰减对探索/利用权衡的影响

A 更精确地利用当前解
B 更广泛地探索搜索空间 ✓ 正确答案
C 立即收敛
D 不改变行为
#

38. PTAS 与 FPTAS 的区别及其对输入规模的依赖

A 两者相同
B FPTAS 不保证近似
C PTAS 比 FPTAS 更近似
D FPTAS 的复杂度是 n 与 1/ε 的多项式,PTAS 中 ε 可进入指数 ✓ 正确答案
#

39. 为何一般 TSP 无法有常数近似(除非 P=NP)

A 常数近似会诱导出汉密尔顿回路问题的多项式判定,除非 P=NP ✓ 正确答案
B 边权都是整数
C TSP 规模太大
D 没有已知算法
#

40. 为何随机优化常用于无法精确建模的调度/布局问题

A 它保证最优
B 只需能评估解质量,无需可微或解析模型 ✓ 正确答案
C 它比动态规划快
D 它不需要目标函数
#

41. 为何随机化算法的"错误概率"可通过重复指数级降低

A p·k
B k/p
C 1-p
D p^k ✓ 正确答案
#

42. 函数式编程中"持久化"与"不可变"概念的关联

A 两者无关
B 持久化要求可变
C 不可变保证共享安全,持久化通过路径复制实现新版本 ✓ 正确答案
D 持久化禁止共享
#

43. 分块替代线段树的场景中难以合并的信息(如众数)

A 区间众数(难以合并) ✓ 正确答案
B 区间和
C 区间最大值
D 区间 GCD
#

44. 分块维护"区间加 + 区间小于 K 的个数"的通用套路

A 在块内有序数组上二分(用 K-add 定位) ✓ 正确答案
B 暴力遍历整块
C 全数组扫描
D 使用线段树
#

45. 分块(sqrt decomposition)如何用 √n 块平衡查询与修改

A 块必须为 n
B 块必须越小越好
C 整块数与散块长度都约为 √n ✓ 正确答案
D 与 n 无关
#

46. 可持久化 Trie 在异或最值/带版本查询中的运用

A 从低位到高位
B 从高位到低位贪心选与 x 相反的位 ✓ 正确答案
C 逐位随机
D 暴力枚举
#

47. 可持久化并查集如何用按秩合并+路径压缩做版本回滚

A 秩无关紧要
B 按秩合并更慢
C 路径压缩不合法
D 路径压缩会修改多个节点,在可持久化下代价高 ✓ 正确答案
#

48. 可持久化线段树(主席树)如何共享未修改的子树

A O(n)
B O(1)
C O(log n) ✓ 正确答案
D O(n²)
#

49. 可持久化结构为何多用"新建节点"而非原地修改

A 新建节点更省空间
B 没有区别
C 原地修改更快
D 原地修改会破坏历史版本,违背持久化 ✓ 正确答案
#

50. 如何用可持久化线段树解决"历史版本区间询问"

A 只保存最新版本
B 每次修改原地更新
C 每个版本对应一个时间点的状态,查询在对应版本根上做区间操作 ✓ 正确答案
D 用哈希
#

51. 如何用线段树维护"区间最值/历史最值/区间 GCD"

A 哈希
B 更多节点
C 历史极值标记与历史最大懒标记 ✓ 正确答案
D 无需额外维护
#

52. 如何用莫队维护"出现次数为某值的元素个数"

A 只需堆
B 只需一个数组
C 只需前缀和
D cnt[x](元素出现次数)与 freq[k](出现次数为 k 的元素个数) ✓ 正确答案
#

53. 如何评估近似解质量,下界/对偶给出 OPT 的紧度

A 精确值
B 上界
C 下界 ✓ 正确答案
D 无关量
#

54. 带修改莫队(三指针中 L,R,Time)的设计与复杂度

A O(n√n)
B O(n²)
C O(n^(5/3)) ✓ 正确答案
D O(n)
#

55. 当添加/删除代价不对称时莫队是否仍适用

A 线段树
B 普通莫队
C 带修改莫队
D 回滚莫队(只做添加,删除时回滚) ✓ 正确答案
#

56. 持久化对空间复杂度的代价及垃圾回收考量

A 空间不变
B 每个版本新增 O(log n) 节点,总空间 O(n log n) ✓ 正确答案
C 空间 O(n²)
D 空间 O(1)
#

57. 旅行商问题(TSP)在三角不等式下的 2-近似(MST 翻倍)

A n
B 3/2
C 2 ✓ 正确答案
D 1
#

58. 树上莫队如何将路径查询映射到欧拉序区间

A 偶数次
B 任意次数
C 零次
D 奇数次(LCA 特殊处理) ✓ 正确答案
#

59. 模拟退火如何以概率接受劣解以跳出局部最优

A 增大 ✓ 正确答案
B 减小
C 不变
D 为零
#

60. 线段树合并(merge)在树的子树信息聚合中的应用

A O(n log n) ✓ 正确答案
B O(n²)
C O(log n)
D O(n)
#

61. 线段树懒标记(lazy propagation)在范围更新的必要性

A 让查询更快
B 把整段更新合并为 O(1) 标记,下推时再更新,使区间更新 O(log n) ✓ 正确答案
C 不需要下推
D 减少构建时间
#

62. 莫队适合"离线、可加减维护"的信息统计类问题

A 在线查询
B 离线且信息可 O(1) 增删维护 ✓ 正确答案
C 信息不可维护
D 只能处理最小值
#

63. 近似算法与机器学习推理中量化的"误差预算"类比

A 保证绝对精确
B 在设定的误差预算内换取效率 ✓ 正确答案
C 牺牲正确性
D 不关心误差
#

64. ODT 用 set 存储连续同值区间及合并/分裂的实现

A 直接二分
B 先 split(l) 与 split(r+1),删除区间后插入新区间 ✓ 正确答案
C 遍历所有区间
D 重建整棵树
#

65. 为何 ODT 仅在"大量区间赋值"数据下才高效(否则退化)

A 频繁 assign 使区间数减少 ✓ 正确答案
B 随机操作
C 数据小
D 区间数恒为 n
#

66. 珂朵莉树(ODT)利用区间推平(assign)维护段信息的思想

A 单个元素
B 连续同值区间段 ✓ 正确答案
C 整棵子树
D 哈希桶