跳到正文

第1章学习笔记:竞赛解题闭环与复杂度预算

课程笔记

从题意、数据范围和暴力基线建立可验证解题流程。

关联:章节 第1章 竞赛解题闭环与复杂度预算

第1章笔记:竞赛解题闭环与复杂度预算

目标

从题意、数据范围和暴力基线建立可验证解题流程。

七课依赖

  • 读题:输入输出契约:围绕读题:输入输出契约先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 样例只说明什么:围绕样例只说明什么先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 数据范围反推预算:围绕数据范围反推预算先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 暴力基线与小数据:围绕暴力基线与小数据先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 循环不变量与正确性:围绕循环不变量与正确性先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 测试、对拍与首错定位:围绕测试、对拍与首错定位先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 从暴力到优化的完整复盘:围绕从暴力到优化的完整复盘先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。

复杂度与适用条件表

算法对象 不变量/复杂度来源 使用边界
读题:输入输出契约 围绕读题:输入输出契约先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
样例只说明什么 围绕样例只说明什么先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
数据范围反推预算 围绕数据范围反推预算先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
暴力基线与小数据 围绕暴力基线与小数据先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
循环不变量与正确性 围绕循环不变量与正确性先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
测试、对拍与首错定位 围绕测试、对拍与首错定位先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
从暴力到优化的完整复盘 围绕从暴力到优化的完整复盘先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 复杂度必须说明输入规模、最坏/期望口径和常数边界。 本课必须再检查边界输入、整数溢出、下标和不可行状态。

复盘

每题保存暴力、优化、证明、四组边界测试和首个WA输入;一周后换数据重做。