跳到正文

第11章学习笔记:字符串与竞赛数论

课程笔记

用前缀匹配结构和模运算消除重复比较。

关联:章节 第11章 字符串与竞赛数论

第11章笔记:字符串与竞赛数论

目标

用前缀匹配结构和模运算消除重复比较。

七课依赖

  • 字符串匹配的暴力基线:围绕字符串匹配的暴力基线先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • KMP失配函数:围绕KMP失配函数先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • Z函数与前缀匹配:围绕Z函数与前缀匹配先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 滚动哈希与碰撞核验:围绕滚动哈希与碰撞核验先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • gcd与扩展欧几里得:围绕gcd与扩展欧几里得先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 快速幂、逆元与组合数:围绕快速幂、逆元与组合数先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
  • 筛法与质因数分解:围绕筛法与质因数分解先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度;边界:哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。

复杂度与适用条件表

算法对象 不变量/复杂度来源 使用边界
字符串匹配的暴力基线 围绕字符串匹配的暴力基线先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
KMP失配函数 围绕KMP失配函数先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
Z函数与前缀匹配 围绕Z函数与前缀匹配先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
滚动哈希与碰撞核验 围绕滚动哈希与碰撞核验先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
gcd与扩展欧几里得 围绕gcd与扩展欧几里得先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
快速幂、逆元与组合数 围绕快速幂、逆元与组合数先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。
筛法与质因数分解 围绕筛法与质因数分解先写朴素算法,再提炼状态或不变量,证明优化保持答案并计算时间空间复杂度 哈希可能碰撞;模除法要求逆元存在;KMP下标约定必须统一。 本课必须再检查边界输入、整数溢出、下标和不可行状态。

复盘

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