LeetCode 周赛解题报告

LeetCode 周赛解题报告

Overview

把「上一篇周赛解题报告(格式参考)+ 本场比赛代码目录(题目与题解)」转化为一篇可直接发布的周赛解题报告 Markdown 文章,写入博客 _posts/ 目录。报告用中文,风格与历史文章一致。

多解法与错误解法要求(强制):当同一题存在多个正确解法时,必须全部介绍(按由浅入深或得分由低到高排列,每种解法独立成小节并附代码);当存在失败/部分得分/错误重写版本时,也必须介绍并分析失败原因(如溢出、超时、死循环、重复输出等)。不得只呈现最终 AC 版本而忽略其他版本。

输入约定

用户通常会提供(缺省时按规则定位):

若上一篇报告未提供,在博客 _posts/ 下按文件名 *-leetcode-contest-*.md 找最近一篇;若输出路径未提供,参照上一篇所在 _posts/YYYY/MM/ 目录。

执行流程

Step 1: 提炼格式模板

通读上一篇报告,提取:

Step 2: 读取比赛代码目录

Step 3: 撰写报告

Step 4: 验证(必须执行)

Step 5: 交付

已知坑

  1. 编译环境是 macOS:无 bits/stdc++.h,需 #include <vector> <string> <cstdlib> <iostream> <algorithm>;每个 X.cpp 自带 class Solution,一次只能 include 一个(重复定义会编译失败);题解文件在 #ifdef USACO_LOCAL_JUDGE 分支外没有头文件,测试主函数需先包含标准头再 include 题解。
  2. 左值引用参数:maxAlternatingSum(vector<int>& nums) 不能直接传 {1,2,3} 初始化列表,先建命名 vector 再传。
  3. 多版本代码:X.cpp 可能是未验证重写。实例:522 场 C 题 C.cpp 用 resize 初始化 memo,多次调用残留旧值导致后续用例错误;AC 版本 C-AC-100*.cpp 无此问题。报告代码以验证结果为准,修正后自洽。
  4. 不插图:历史文章图片在 res2026.tiankonguse.com,由作者手工上传;生成的报告只含文字与代码。
  5. 推导/证明写作:特征类结论写双向证明——正方向用递归拆分/归纳,反方向用归纳;措辞精确(如「每个块的长度为奇数」≠「整个字符串长度为奇数」),可用反例澄清(”ab” 是好字符串但长度为 2)。
  6. 尊重用户手工调整:目标文件可能已被用户改过(标题、措辞、删代码块等),先读当前内容,只改被点名范围,不擅自恢复被删内容。
  7. 多解法不可省略:目录中存在的每个 .cpp 版本都要读完并归类。正确解法全部介绍(分小节),错误/部分得分解法也要介绍并分析原因。只写 AC 版是不合格的。实例:NOIP 2005 第四题有 20 分暴力、30 分大整数暴力、30 分逐位递推(ll溢出)、100 分逐位递推(BigNum)、死循环错误重写共 5 个版本,报告中全部呈现。

Resources

关注公众号,接收最新消息

tiankonguse + ≡
穿越