PrevNext

本指南包含六个分区:基础知识、铜组、银组、金组、铂金组和进阶。每个分区 又分为若干类别,每个类别由一组模块组成。每个模块(例如你正在阅读的 这一篇)对应网站上的一篇文章或一个页面,通常由三部分组成:

  1. 课程正文:通过一道重点题介绍概念;
  2. 代码实现:给出重点题的解法;
  3. 练习题:帮助你学习如何将概念应用到不同题目中。

部分较少考查的模块会标为“可选”。如果目标只是晋级对应组别,不一定要完成这些 模块;不过后续更高组别可能会引用它们。

课程正文

课程正文由精选的外部资料、题目和我们编写的补充说明组成。

  • 我们会尽可能链接已有的在线资料。
  • 目标是帮助你理解相关概念。
  • 内容应按顺序学习。
  • 通常以至少一道重点题开始。
    • 重点题直接应用所学概念,也适合测试你的实现。
  • 强烈推荐阅读的外部资料会带有星标。如果仍有不理解的地方,可以继续阅读 其他资料。若多份资料内容基本相同,至多标记其中一份。

代码实现

课程正文之后通常会给出重点题的解法实现。

  • 所有模块都会提供 C++ 代码。
  • 至少铜组至金组会提供 Java 代码。
  • 至少铜组及部分银组会提供 Python 代码。

如果重点题题面没有给出样例输入输出,模块中会另行提供。

练习题

读完课程后,你会看到来自不同来源(不仅是 USACO)的大量题目,用于练习所学概念。

  • 题目大致按照推荐完成顺序排列。
  • 不必完成每一道题,只需做到对本模块内容足够熟悉。我们认为最值得做的题会带有星标。

如果某道题不能很好体现对应主题,请告诉我们。

题解

对于没有题解或现有题解质量不佳的题目,我们会尽力编写完整题解。_星标题目通常 会有更好的题解。_如果你认为某题需要题解,请通过“联系我们”按钮告知我们。

Warning!

目前许多简略题解实际上帮助不大。

题目难度(铜组至金组)

难度表示学习完当前模块后,这道题预计仍有多大挑战,并非题目的绝对难度。 因此不同模块间的难度不能直接比较,即使它们属于同一组别。

难度从 **Very Easy(非常简单)**到 Insane(极难)

  • Very Easy:与模块相关,但即使阅读资料前也应能较快解决。
  • Easy:熟悉模块的人可以较快解决;刚读完星标资料的人也应能够入手。
  • Medium:需要更多思考。
  • Hard:可能需要投入相当多的时间。
  • Very Hard:即使对应组别的顶尖选手也会感到困难,通常需要多层观察和超出 本模块的知识。
  • Insane:一般不会出现在对应组别的合理比赛中,升到更高组别后再考虑即可。

来源和标签规范

  • 遵循题库页面中已有来源和标签的格式。
  • 不同标签应拆成不同字符串,例如写成 ['Meet in the Middle', 'DP'],而不是 ['Meet in the Middle, DP']
  • 部分来源会自动获得悬停时显示的提示文字。未自动分配提示的来源可通过 sourceDescription 指定。

自定义组件

模块有时会包含自定义组件,下面是一些常见组件。

进阶提示

作者提供的实用建议。

隐藏内容

Optional: 可选内容

并非所有内容都是算法竞赛必需知识。可以跳过可选内容;感兴趣的话也欢迎深入探索。

Warning!

请特别留意警告块中的内容!

有关自定义组件的更多信息,请参见使用 MDX

状态

题目状态:

  • Not Attempted:尚未尝试。
  • Solving:正在解题,会显示在仪表盘的活跃题目中。
  • Solved:已解决。
  • Reviewing:已解决但希望继续显示在活跃题目中以便复习。
  • Skipped:暂时跳过但打算以后再做,会显示在活跃题目中。
  • Ignored:已经跳过且不打算再做;若在设置中启用,仍会显示在活跃题目中。

模块(及资源)状态:

  • Not Started:尚未开始。
  • Reading:正在阅读,会显示在仪表盘的活跃模块中。
  • Practicing:正在练习,会显示在活跃模块中。
  • Complete:已完成。
  • Skipped:暂时跳过但打算以后再学,会显示在活跃模块中。
  • Ignored:已经跳过且不打算再学;若在设置中启用,仍会显示在活跃模块中。

Module Progress:

PrevNext