> For the complete documentation index, see [llms.txt](https://docs.1l.lol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.1l.lol/stcoder-syllabus.md).

# StCoder 竞赛大纲

> 来源：**StCoder Online Judge** 竞赛体系大纲，修订时间 2026 年 3 月 26 日。分 **STF（基础阶段）** 与 **STA（算法阶段）**。标有 📖 的条目已在本站有对应笔记。

## STF 竞赛大纲（基础阶段）

面向编程入门与基础能力培养，重视语法基础、程序书写规范与基础数学能力，不涉及系统算法训练。

### 编程知识

**1. 基本数据类型 ·** [**📖 笔记**](/basics/data-types.md)

* 整数类型：int、long long
* 浮点类型：float、double
* 字符类型：char
* 布尔类型：bool

**2. 输入与输出 ·** [**📖 笔记**](/basics/io.md)

* 标准输入与输出
* 格式化输入输出
* 换行与格式控制

**3. 文件读写 ·** [**📖 笔记**](/complexity-debug/file-redirect.md)

* 文件输入与输出的基本概念
* freopen 的使用方法
* 本地调试与 OJ 提交的区别

**4. 基本运算 ·** [**📖 笔记**](/basics/operators.md)

* 算术运算：+、-、\*、/、%
* 比较运算：>、<、>=、<=、==、!=
* 逻辑运算：&&、||、!
* 自增与自减运算

**5. 常见数学函数 ·** [**📖 笔记**](/basics/math-functions.md)

* 绝对值函数
* 四舍五入函数
* 向上取整与向下取整
* 平方与开方函数
* 幂函数

**6. 程序控制结构 ·** [**📖 笔记**](/basics/branch.md)

* 顺序结构
* 条件分支结构（if、if-else）
* 多分支结构（else if、switch）
* 循环结构（for、while、do-while）

**7. 数组与字符串 ·** [**📖 笔记**](/data-structures/array-1d.md)

* 一维数组
* 二维数组
* 字符数组
* string 字符串类型
* 常见字符串操作

**8. 常用算法函数 ·** [**📖 笔记**](/sorting/std-sort.md)

* sort：排序
* max / min：取最值
* swap：交换数据

**9. 基本调试与程序规范**

* 常见编译错误
* 常见运行错误
* 输出格式规范
* 变量命名规范

### 数学知识

**1. 基础数学概念**

* 线段 / 数轴 / 坐标系
* 正数与负数 / 绝对值 / 区间的概念

**2. 数字与数位**

* 数位提取 / 各位数字之和 / 数字反转
* 位权概念 / 十进制表示

**3. 数与运算性质**

* 奇数与偶数 / 倍数与因数 / 整除关系
* 余数与取模 / 运算优先级

**4. 比例与统计**

* 百分数 / 折扣与增长率 / 平均数
* 最大值与最小值 / 简单数据统计

**5. 函数与表达式**

* 代数表达式 / 表达式求值 / 简单函数关系 / 分段函数

**6. 未知数与方程**

* 未知数的概念 / 一元一次方程 / 简单方程求解 / 利用方程解决应用问题

**7. 数列基础**

* 等差数列 / 数列规律 / 数列求和

**8. 数论基础**

* 最大公约数（GCD） / 最小公倍数（LCM） → [📖 笔记](/number-theory/gcd.md)
* 质数（素数） / 质数判断 / 因数分解 → [📖 笔记](/number-theory/prime-test.md)

**9. 规律与周期**

* 倍数与周期 / 循环规律 / 余数规律

**10. 几何基础**

* 点与坐标 / 两点距离 / 矩形面积与周长 / 简单平面几何问题

**11. 常见数学方法**

* 分类讨论 / 数学建模 / 简单规律总结

## STA 竞赛大纲（算法阶段）

面向算法竞赛与提升训练，强调结构体与函数抽象、基础算法思想、常用 STL 容器、数据结构、搜索、图论、动态规划与数学工具的综合运用。

### 结构体与函数

**1. 结构体 ·** [**📖 笔记**](/data-structures/struct.md)

* 结构体的定义与使用
* 结构体数组
* 结构体在排序与信息组织中的应用

**2. 函数基础 ·** [**📖 笔记**](/functions/return-and-params.md)

* 函数的定义与调用
* 参数与返回值
* 值传递与引用传递

**3. 模块化编程**

* 将复杂问题拆分为多个函数
* 函数在算法实现中的组织作用
* 提高代码复用性与可维护性

**4. 递归函数 ·** [**📖 笔记**](/functions/recursion-1-10.md)

* 递归的概念
* 递归边界
* 递归展开与回溯过程
* 简单递归问题

### 基础算法

**1. 算法复杂度 ·** [**📖 笔记**](/complexity-debug/time-complexity.md)

* 时间复杂度的概念
* 空间复杂度的概念
* 常见复杂度比较：O(n)、O(n log n)、O(n²)、O(2ⁿ)
* 根据数据范围选择合适算法

**2. 枚举与剪枝 ·** [**📖 笔记**](/algorithms/enumeration-simulation.md)

* 单重枚举、多重枚举
* 优化枚举范围
* 剪枝思想
* 利用性质减少无效计算

**3. 模拟算法 ·** [**📖 笔记**](/algorithms/enumeration-simulation.md)

* 按题意逐步实现过程
* 状态变化的维护
* 多轮过程模拟
* 边界情况与特殊情况处理

**4. 排序 ·** [**📖 笔记**](/sorting/basic-sorts.md)

* 排序的基本思想
* 常见排序方法
* 排序的稳定性与复杂度
* 排序在查找、统计、去重中的应用

**5. 贪心 ·** [**📖 笔记**](/algorithms/greedy.md)

* 局部最优思想
* 常见贪心模型
* 贪心策略的设计与验证

**6. 分治与二分 ·** [**📖 笔记**](/algorithms/divide-and-conquer.md)

* 分治思想
* 二分查找
* 二分答案
* 判定性问题与二分模型

**7. 高精度 ·** [**📖 笔记**](/number-theory/big-number.md)

* 高精度整数表示
* 高精度加法
* 高精度减法
* 高精度乘法与除法

### STL

**1. 常用容器 ·** [**📖 笔记**](/data-structures/stl.md)

* vector（动态数组）
* pair（二元组）
* set / multiset（有序集合）
* map / unordered\_map（键值映射）

**2. 常用结构适配器 →** [**📖 笔记**](/data-structures/stack.md)

* stack（栈）
* queue（队列）
* deque（双端队列）
* priority\_queue（优先队列）

**3. 常用算法函数 ·** [**📖 笔记**](/sorting/std-sort.md)

* reverse：序列翻转
* lower\_bound：查找第一个 ≥ x 的位置
* upper\_bound：查找第一个 > x 的位置
* binary\_search：判断是否存在

**4. 基本使用**

* 容器的定义与初始化
* 插入与访问元素
* 遍历方式
* 简单应用场景

### 基础数据结构

**1. 线性结构 ·** [**📖 笔记**](/data-structures/stack.md)

* 栈
* 队列
* 双端队列

**2. 单调结构**

* 单调栈
* 单调队列
* 单调结构在区间问题中的应用

**3. 堆**

* 堆的概念
* 小根堆与大根堆
* 堆与优先队列的关系

**4. 哈希表**

* 哈希思想初步
* 判重与统计
* 映射与快速查询

### 搜索算法

**1. 搜索基础 ·** [**📖 笔记**](/search/dfs.md)

* 搜索问题的基本思想
* 状态空间的概念
* 状态转移
* 搜索顺序
* 访问标记（vis）

**2. 深度优先搜索 DFS ·** [**📖 笔记**](/search/dfs.md)

* 递归实现
* 回溯思想
* 路径枚举问题
* 排列与组合问题
* 子集枚举

**3. 广度优先搜索 BFS ·** [**📖 笔记**](/search/bfs.md)

* 队列实现
* 分层搜索
* 最少步数问题
* 简单状态转移问题

**4. 搜索优化**

* 剪枝思想
* 避免重复状态
* 优化搜索顺序
* 减少搜索规模

### 树结构

**1. 树的基础概念 ·** [**📖 笔记**](/data-structures/tree.md)

* 树的概念
* 结点、边、根、叶子、深度、高度
* 父子关系与子树

**2. 树的存储**

* 双亲表示法
* 孩子表示法
* 孩子兄弟表示法
* 邻接表存储树

**3. 二叉树 ·** [**📖 笔记**](/data-structures/binary-tree.md)

* 二叉树的概念与性质
* 满二叉树、完全二叉树
* 二叉树的顺序存储与链式存储

**4. 二叉树的遍历 ·** [**📖 笔记**](/search/tree-traversal.md)

* 前序遍历
* 中序遍历
* 后序遍历
* 层序遍历

**5. 特殊树结构 ·** [**📖 笔记**](/data-structures/huffman-tree.md)

* 哈夫曼树
* 二叉线索树

### 图结构与图论算法

> ⚠️ 本站笔记目前未涵盖图论（GESP 七、八级范围），以下条目暂无对应笔记。

**1. 图的基础概念**

* 图的概念 / 有向图与无向图 / 带权图
* 顶点、边、度、入度、出度

**2. 图的存储**

* 邻接矩阵 / 邻接表 / 边集数组

**3. 图的遍历**

* 深度优先搜索 DFS / 广度优先搜索 BFS / 图的连通块遍历

**4. 最短路径**

* Dijkstra / Bellman-Ford / Floyd / SPFA

**5. 图的连通性**

* 连通图与连通分量 / 强连通与弱连通初步 / 连通性分析

**6. 欧拉回路**

* 欧拉路径与欧拉回路的概念 / 存在条件 / 基础求法

**7. 最小生成树**

* 最小生成树的概念 / Kruskal 算法 / Prim 算法

**8. DAG 与拓扑排序**

* 有向无环图 DAG / 拓扑排序 / 拓扑排序的应用

**9. 关键路径**

* AOE 网的概念 / 事件最早发生时间 / 事件最迟发生时间 / 关键活动与关键路径

**10. 并查集**

* 集合合并与查询 / 路径压缩 / 按秩合并
* 连通性问题 / Kruskal 最小生成树中的应用

### 常见算法技巧

**1. 前缀和与差分 ·** [**📖 笔记**](/data-structures/prefix-sum.md)

* 一维前缀和
* 二维前缀和
* 一维差分
* 二维差分

**2. 双指针**

* 相向双指针 / 同向双指针 / 滑动窗口

**3. 离散化**

* 坐标压缩 / 离散化在区间与统计问题中的应用

**4. 位运算 ·** [**📖 笔记**](/computer-basics/bitwise.md)

* 与、或、异或、取反
* 左移与右移
* 二进制表示
* 位运算常见技巧
* 状态压缩

### 动态规划

**1. DP 基本思想 ·** [**📖 笔记**](/algorithms/dynamic-programming.md)

* 动态规划的概念
* 最优子结构
* 无后效性
* 状态设计
* 状态转移
* 初始化与边界处理

**2. 线性 DP ·** [**📖 笔记**](/algorithms/dynamic-programming.md)

* 基础递推模型
* 最长上升子序列（LIS）
* 最长公共子序列（LCS）
* 序列上的状态设计

**3. 背包问题 ·** [**📖 笔记**](/algorithms/knapsack.md)

* 01 背包
* 完全背包
* 多重背包
* 分组背包

**4. 区间 DP**

* 区间划分思想 / 按区间长度转移 / 区间合并类问题

### 数学与数论

**1. 模运算与快速计算**

* 模运算性质 / 快速幂 / 快速乘初步

**2. 筛法 ·** [**📖 笔记**](/number-theory/sieve-eratosthenes.md)

* 埃氏筛
* 线性筛
* 筛法在统计类问题中的应用

**3. 组合数学（简）**

* 排列与组合的基本概念 / 简单计数问题 / 递推与组合结合的问题


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.1l.lol/stcoder-syllabus.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
