模拟赛 #1
仿照 ICPC / 区域赛的难度梯度和题型分布的一套综合模拟——6 题、3 小时,难度递增,前面签到、后面压轴,检验搜索 / DP / 图论 / 基础算法的融会贯通。
每题附有「考点提示」(折叠收起,真实比赛没有),建议先盖住提示自己判断该用什么算法。做完把代码发回去对拍评测。
规则说明
好主意!你已经走完了铜牌最核心的三大块(搜索、DP、图论)+ 基础算法 + 实战技巧,是时候来一场综合模拟赛检验融会贯通了。
我给你设计一套模拟赛,完全仿照 ICPC/区域赛的难度梯度和题型分布,让你体验真实比赛节奏。
规则说明(仿 ICPC,接 0.9):
- 共 6 题,建议时长 3 小时
- 难度递增,前面是签到题,后面需要思考
- 建议做题顺序:先扫一遍所有题,从最有把握的开始(接 0.9 的开局策略)
- 每题我标注了考点提示(实际比赛没有,这里为了帮你定位知识点),但建议先盖住提示自己判断该用什么算法
赛题(6 题 / 3 小时)
给 n 个整数,求所有不同的数之和。
输入
第一行 n
第二行 n 个整数
样例输入
5
3 1 3 2 1
样例输出
6(不同的数是 1、2、3,和为6)
提示考点提示(先别看)▸
set 去重 或 排序去重(接 1.1)
给 n 个数,对每个数,求它右边第一个比它大的数的值,不存在输出 -1。
输入
第一行 n
第二行 n 个整数
样例输入
5
2 5 3 6 1
样例输出
5 6 6 -1 -1提示考点提示▸
单调栈(接 1.7)
n 个城市 m 条带权无向道路。求从城市 1 到城市 n 的最短距离,不可达输出 -1。
输入
第一行 n m
接下来 m 行:u v w(u到v有权值w的边)
样例输入
4 4
1 2 1
2 3 2
1 3 5
3 4 1
样例输出
4(1→2→3→4 = 1+2+1 = 4)
提示考点提示▸
Dijkstra 最短路(接 4.3)
有 n 个物品,每个有重量 w[i] 和价值 v[i],背包容量 W,每个物品只能选一次。求能装的最大价值。
输入
第一行 n W
接下来 n 行:w[i] v[i]
样例输入
4 8
2 3
3 4
4 5
5 6
样例输出
10提示考点提示▸
01 背包(接 3.3)
n 个人,m 对朋友关系(朋友的朋友也是朋友,构成一个圈子)。求最大的朋友圈有多少人。
输入
第一行 n m
接下来 m 行:a b(a和b是朋友)
样例输入
6 4
1 2
2 3
4 5
5 6
样例输出
3({1,2,3} 是最大的圈,3人)
提示考点提示▸
并查集 + 维护集合大小(接 4.2)
n×m 网格,每个格子有一个值(可能为负)。从左上角 (0,0) 出发,只能向右或向下走,到达右下角 (n-1,m-1)。求路径上数字之和的最大值。
输入
第一行 n m
接下来 n 行,每行 m 个整数
样例输入
3 3
1 3 1
1 5 1
4 2 1
样例输出
12(路径 1→3→5→2→1 = 12)
提示考点提示▸
路径 DP(接 3.1/3.2)
比赛建议 & 进行方式
📝 比赛建议
- 先花 5 分钟扫一遍全部 6 题,判断每题该用什么算法、难度如何(接 0.9 开局)。
- 从签到题(A)开始,快速拿下,建立信心。
- 按你的把握排序做题,别卡在一道题上(接 0.9 止损)。
- 每题写完先自测(造边界数据,接 0.6),有把握再"提交"(发给我)。
- 遇到卡壳,可以先跳过做后面的。
怎么进行
你可以:
- 一题一题做,每写完一题把代码发给我,我当"评测机"给你判(AC / 指出 bug),并算"罚时"。
- 或者全部做完再一起发,我统一批改。
- 卡住了可以问我提示(但真实比赛没有提示,所以尽量自己想)。
我会像真实评测一样:
- 代码对 → "AC!" + 简短点评
- 有 bug → 指出错在哪(WA/TLE/RE 类型 + 大致方向,像真实评测给你线索,让你自己改,接 0.4)
- 给你实时排名感:做出几题、用时多少
现在开始计时! ⏱️
先告诉我你扫完题后的判断(每题打算用什么算法、准备先做哪几题),或者直接开始做第一题。我在这儿当你的评测机 + 教练。
加油,这是检验你这段时间学习成果的时候了!💪