考研复试 · 保研夏令营 / 预推免
考研复试机试和保研营机考,最需要的是一条能坚持走完的训练路线。这个页面把站内内容整理成三样东西:一条从 ACM 输入输出到六大考点的备考路线、一组按考点分好类的动画题单、和可以直接提交的在线练习。想准备好,先把这里走扎实。
说明:这是持续更新中的站内备考路线(2026-07 版);各校机试的科目、语言和具体规则以当年官方通知为准。
考研机试大多是 ACM 模式:自己读输入、自己写输出,和只填函数体完全不同。C++ 机试入门 22 节动画课从 cin/cout、多组输入讲到 STL 常用容器,把这道坎先迈过去。
看 C++ 机试入门课 →「考研机试 · ACM 模式」学习路径用 34 道经典题打通六大考点:数组模拟、字符串处理、排序与二分、栈/队列/链表、树与图搜索、基础 DP。难度封顶中等,不踩断崖。
进入 34 题路径 →这些题都是标准输入输出的站内 OJ 练习,可以直接写代码、运行、提交。先用它们把输入输出、边界处理和限时手感跑起来。
数组哈希 · 打开 OJ 直接提交
栈 · 打开 OJ 直接提交
动态规划 · 打开 OJ 直接提交
递推 · 打开 OJ 直接提交
字符串窗口 · 打开 OJ 直接提交
哈希与堆 · 打开 OJ 直接提交
DFS/BFS · 打开 OJ 直接提交
多源 BFS · 打开 OJ 直接提交
网格 DP · 打开 OJ 直接提交
背包 DP · 打开 OJ 直接提交
排序模拟 · 打开 OJ 直接提交
排序双指针 · 打开 OJ 直接提交
六组题单全部是站内已有的 ACM 模式 OJ 题,可以直接写代码、提交、看判题结果。建议按顺序推进:先把输入输出跑通,再逐组吃透同考点训练,最后用图论组拉区分度。
先用简单题把「读入—处理—输出」的完整 ACM 程序跑通,练的是格式和手感,不是难度。
机试出镜率最高的两类题:按题意逐步推演,边界处理是失分重灾区。
sort 比较器要会写,二分的精确值、左边界、右边界三种写法一次打通。
树的递归三问加回溯枚举:深度、层序先写熟,再上「选择—递归—撤销」的回溯模板。
机试 DP 集中在线性递推、网格路径和基础背包,先写清状态含义再写转移。
从网格连通性到拓扑排序、并查集、最短路,考到就是区分度。
机试现场没时间从零想代码,这 9 个骨架要能默写。每张卡先看适用场景和易错点,再用旁边的站内 OJ 题当场验证一遍。
适用:所有机试题的起点:完整程序自己读输入、自己写输出,和只填函数体完全不同。
#include <bits/stdc++.h>
using namespace std;
int main() {
int n; cin >> n;
vector<int> a(n);
for (auto &x : a) cin >> x;
cout << a[0] << "\n";
return 0;
}易错:输出多打空格或换行会判错;cin 和 getline 混用时要先把行尾换行吃掉。
适用:题面写「每行一组数据,处理到文件结束」时的标准读法。
int a, b;
while (cin >> a >> b) {
cout << a + b << "\n";
}易错:while (cin >> a >> b) 读到 EOF 自动结束;本地测试用 Ctrl+D(Windows 是 Ctrl+Z)模拟 EOF。
适用:结构体多关键字排序、按区间左端点或自定义规则排序。
sort(v.begin(), v.end(), [](const P &x, const P &y) {
if (x.score != y.score) return x.score > y.score;
return x.id < y.id;
});易错:比较器必须是严格弱序:相等时返回 false,写成 <= 会运行错误。
适用:计数、查重、快速查找,哈希类题的核心容器。
unordered_map<int, int> pos;
for (int i = 0; i < n; i++) {
if (pos.count(target - a[i])) { /* 找到一组答案 */ }
pos[a[i]] = i;
}易错:unordered_map 用 [] 访问不存在的 key 会插入默认值;需要按 key 有序遍历时改用 map。
适用:层序遍历、最短步数、多源扩散类题的骨架。
queue<pair<int,int>> q;
q.push({sx, sy}); vis[sx][sy] = 1;
while (!q.empty()) {
auto [x, y] = q.front(); q.pop();
// 依次尝试四个方向,越界或已访问的跳过
}易错:入队时就标记 visited;等出队才标记会重复入队,队列爆掉。
适用:网格连通块、单词搜索、回溯枚举的通用骨架。
void dfs(int x, int y) {
if (x < 0 || y < 0 || x >= n || y >= m || vis[x][y]) return;
vis[x][y] = 1;
for (int d = 0; d < 4; d++) dfs(x + dx[d], y + dy[d]);
}易错:回溯题离开结点要撤销标记;连通块题不撤销。两类混用会少算或死循环。
适用:非负权图单源最短路:网络延迟、最短到达时间类题。
priority_queue<PII, vector<PII>, greater<>> pq;
dist[s] = 0; pq.push({0, s});
while (!pq.empty()) {
auto [d, u] = pq.top(); pq.pop();
if (d > dist[u]) continue;
// 松弛 u 的每条出边
}易错:小根堆存 {dist, node};出堆时 d 大于 dist[u] 直接 continue(惰性删除),否则会重复松弛。
适用:连通分量计数、集合合并、判断两点是否连通。
int find(int x) { return fa[x] == x ? x : fa[x] = find(fa[x]); }
void unite(int x, int y) {
x = find(x); y = find(y);
if (x != y) fa[x] = y;
}易错:find 必须路径压缩,否则链状数据会超时;合并前先判两个根是否相同。
适用:爬楼梯、打家劫舍类线性递推,以及网格最小路径和。
for (int i = 1; i < m; i++)
for (int j = 1; j < n; j++)
dp[i][j] = g[i][j] + min(dp[i-1][j], dp[i][j-1]);易错:先写清 dp[i] 的含义和初值再写转移;网格 DP 的第一行第一列要单独初始化。
按目标院校方向做同考点训练:每个方向给出重点能力、站内 OJ 推荐、动画讲解和 7 天训练建议,全部在站内完成。各校机试的科目、语言和规则以当年官方通知为准。
站内 OJ 推荐
推荐动画
7 天训练建议:前 2 天补模板与输入输出,中间 3 天主攻图论与搜索,最后 2 天字符串收尾加限时模拟。
看完整 7 天训练顺序 →站内 OJ 推荐
推荐动画
7 天训练建议:前 2 天输入输出与搜索模板打底,中间 3 天主攻回溯与 DP,最后 2 天字符串收尾加限时模拟。
看完整 7 天训练顺序 →站内 OJ 推荐
推荐动画
7 天训练建议:前 2 天输入输出与模拟打底,中间 3 天字符串加基础 DP,最后 2 天树搜索加限时模拟。
看完整 7 天训练顺序 →不确定语言、题型和训练顺序时,先把这三件事看清楚,再回到站内路线刷题。
准备机试不用到处找材料,先按这几个入口走:补语言、走主线、看动画、做模拟,薄弱点再回到题单里查漏补缺。
22 节动画课覆盖 ACM 程序模板、输入输出、多组数据、long long、STL 容器、排序、二分和图搜索。适合零基础和临考补模板。
/leetcode-animation/cpp →按六大里程碑推进:数组模拟、字符串、排序二分、栈队列链表、树图搜索、基础 DP。看完能形成完整机试题型地图。
/paths/kaoyan-machine-test →把站内动画题按入门语法、STL、模拟、字符串、排序、二分、DFS/BFS、DP、图论分组,哪里薄弱补哪里。
本页跳转 →适合在短时间内补数组哈希、字符串、搜索和基础 DP,卡住时先看动画把核心思路讲透。
/leetcode-animation/hot100 →学完一轮后用模拟考检验时间分配、读题速度和边界处理。不要把第一次限时留到考场。
/exams →九个考点组覆盖各校机试的绝对主力题型。标注 OJ 的题可直接提交;旁边动画用于复盘思路;标注「站内整理中」的是后续会补成站内练习的机试特色题。
机试第一坎:多组输入、EOF 判断、格式化输出。
map/set/stack/priority_queue 用熟,机试效率翻倍。
树的递归三问 + 网格搜索,机试图论主战场。
机试 DP 集中在线性递推、网格路径、基础背包。