我的算法错题集

Aerhuo 发布于 2025-10-15 72 次阅读


前言:不止于错,更在于通

本笔记的核心目的,并非简单地记录失败的尝试,而是构建一个高效、深刻的思维反刍系统。在算法学习的道路上,真正的成长来源于对思维“症结”的精准定位,以及对正确思想的内化吸收。

为此,本笔记将严格遵循 A.G.I.D.A. 模型 来解构和重塑每一次解题经历。

A.G.I.D.A. 模型解析

A.G.I.D.A. 是五个关键反思步骤的缩写,它代表了从遇到问题到完全吸收其思想精髓的全过程:

  • A - Abstract (摘要)
    • 核心: 提炼问题本质。
    • 内容: 题目来源、核心问题一句话概括、关键算法标签。
    • 目标: 快速索引与回顾,建立问题与知识点的映射。
  • G - Groping (摸索)
    • 核心: 复盘最初的思考路径。
    • 内容: 我最初的核心思路、关键的状态/变量定义、预估的复杂度。
    • 目标: 诚实地记录第一反应,为后续的对比分析提供原始素材。
  • I - Impasse (症结)
    • 核心: 精准定位失败的根本原因。
    • 内容: 失败点(WA/TLE/MLE…)、逻辑错误、效率瓶颈、认知盲区。
    • 目标: 避免“我没想周全”式的笼统归因,必须一针见血地指出思维漏洞。
  • D - Disenchantment (破局)
    • 核心: 萃取标准解法的智慧闪光点。
    • 内容: 破局的关键思想转换、核心公式/数据结构、所属的经典解题范式。
    • 目标: 学习的不仅是“怎么做”,更是“怎么想”。
  • A - Assimilation (吸收)
    • 核心: 将单次经验转化为未来的解题能力。
    • 内容: 一句话教训、未来可应用的模式识别规则。
    • 目标: 建立一套个人的“算法反射弧”,在未来遇到相似问题时,能迅速调用正确的思维模型。

CF:Vlad and a Sum of Sum of Digits

A - Abstract (摘要)


G - Groping (摸索)

  • 我的核心思路: 尝试按每10个数字为一块进行“块状DP”,寻找块与块之间的递推关系。
  • 状态/变量定义: dp[k] 定义为 110k-1 的总和。
  • 复杂度预估: O(T * (N/10))

I - Impasse (症结)

  • 失败点: WA (Wrong Answer), TLE (Time Limit Exceeded)
  • 根本原因:
    • [逻辑错误]: 推导出的块间DP递推关系是分段的,且在 k>=10 时不成立。模型过于复杂,引入了错误。
    • [效率瓶瓶颈]: 在多组查询的循环内重复计算DP数组,未采用预计算。
    • [认知盲区]: 陷入了寻找复杂“块”规律的误区,忽略了问题在“单个数字”层面存在更简单的规律。

D - Disenchantment (破局)

  • 破局关键:
    • [思想转换]: 放弃复杂的块状模型,回归到最简单的逐个递推关系。
    • [核心公式]: f(n) = f(n/10) + n%10S(n) = S(n-1) + f(n)
    • [解题范式]: 预计算。利用“多组查询 + 固定范围”的特点,一次性计算所有可能答案。
  • 最优复杂度: O(N + T)

A - Assimilation (吸收)

  • 一句话教训: 不要为了寻找所谓的“捷径”而过度设计,最简单、最直接的递推关系往往最有效。
  • 模式识别: 以后遇到“多组查询”“数据范围固定”的问题,第一反应应该是“预计算”
兴趣使然的Coder,你可以把我当作极客。
最后更新于 2025-10-21