UOJ Logo CYMario的博客

博客

清华推研机试复刻组 2025 招新 day 0 - 清华考研机试 2024 VP 题解

2025-01-30 21:51:24 By CYMario

Day 1 预告

本次系列活动 Day 1 将在 2 月 1 日下午 14:00 到 18:00 举行。4 小时 5 题,个人赛, IOI 赛制。参照 CSP 专业级认证 套题形式进行组题(编程基础 2 道 + 大模拟 1 道 + 基础算法 1 道 + 进阶算法 1 道),知识点难度分布从“普及-”到“省选/NOI-”。题目来源为尚未复刻并向公众公布的清华往届推研机试题目。后面的两场均为我们的正式活动,欢迎各位算法竞赛爱好者前来参加!

比赛链接https://www.luogu.com.cn/contest/227682 邀请码: 4fte

关于比赛答疑等信息,请加QQ群 515201605,入群理由填写“赛时答疑”即可。赛时的答疑,以及针对紧急事项采取的临时解决方案将会在第一时间于群内发布。

Day 0 介绍 & 题解

本场作为本次系列活动的预热场,为大家带来的是清华考研机试 2024 的完整套题,按照原始场次的 4 小时 3 题(满分 300)进行全真模拟。赛时民间统计的最高分为 230,本次 VP 场最高分为 300。本场题目已开放补题通道。

根据粗略估算,本场题目作为清华考研/预推免的安全线约为 80,作为优秀大学生夏令营的优秀营员分数线约为 130,仅供参考。

本次活动题目的难度标定分知识点难度(参照洛谷或者梦熊OJ的难度标定)与实现难度(直接按易中难区分)。

T1 擂台赛

source:清华考研机试 2024 T1

知识点难度:普及- 实现难度:中等

我们对选手的分组情况进行全排列枚举,每一种排列进行模拟,判断 1 号玩家是否为赢家即可。由于全排列当中可能会出现初始分组重复的情况(两个同一组的选手正反顺序算不同排列),枚举之后的答案除以 $2^{n/2}$ 即可。时间复杂度 $O(n!)$ 。

作为签到题,本题相比往年题目而言,从考察基础的 for 循环改为考察指数型/排列型枚举。对于基础较为薄弱的同学而言会较为棘手。

需要注意的是,本题的样例几乎没有任何用处,需要考生对这部分知识点熟练掌握。

T2

source:清华考研机试 2024 T2

知识点难度:提高- 实现难度:困难

根据题意直接用栈结构进行模拟不难得到一种 $O(n^2)$ 复杂度的解法,可以获得 20 或 40 分(40 分需要将记录每次插入操作的数字个数,以操作个数为规模进行存储)。我们显然需要一种更优的算法来获得满分(以下几种均可)。

算法一

直接暴力模拟之所以上界为 $O(n^2)$ ,是因为每次通过操作 3 将规模较大的栈逐步插入规模较小的栈。一种显而易见的方法就是将每一次操作 3 的实际操作改为从较小栈插入较大栈。通过势能分析不难得到此时的复杂度上界为 $O(n\log n)$ 。而在这种实际操作之后为了与题意效果等价,我们在这种修改实际操作的情况下将栈结构上下颠倒。而直接进行翻转又会导致复杂度上界变为 $O(n^2)$,因此我们可以使用双向链表(list)或者双端队列(deque)等价完成栈的存储,并将栈的颠倒状态进行惰性表示(判断栈顶此时应为队首或队尾,由于本题 $n$ 的上界只有 $2\times 10^5$,因此使用 deque 不会出现 NOI2022 D1T1 的 MLE 惨案)。

在复刻数据中,我们卡掉了错误的启发式合并方式(包括但不限于:按照数字规模而不是操作规模进行启发式合并、使用 vector 在合并之后直接进行 reverse),给了至多 90 分。不是小编想给这么多分,而是这个数据范围真的太难卡了 ←_←

算法二

将每一个栈直接用平衡树(Splay 或者 Treap)进行表示,需要打区间翻转惰性标记。在进行操作 3 的合并时,将 $x$ 号栈对应的平衡树完全翻转并插入 $y$ 号栈对应平衡树末尾即可。时间复杂度依旧是 $O(n\log n)$ 。

算法三

注意到操作 3 的合并操作本质上是将两个结构的头部或者尾部进行相接,我们直接手写双向链表,根据不同情况头尾相接即可。时间复杂度为 $O(n)$ 。

T3 指针

source:清华考研机试 2024 T3

知识点难度:NOI 实现难度:中等

本题的样例同样没有任何用处,甚至会将选手诱导至各种假做法的思路上一去不复返。同样需要选手对相关知识点有一定认知。

使用形如 $O(n^m)$ 的指数型枚举可以获得子任务 1 的 10 分,使用动态规划或其他搜索剪枝方式则同样无法绕过 $O(m^n)$ 的指数复杂度,可以获得至多 40 分。

使用最小费用最大流/有源汇上下界最小费用可行流的基础暴力建模可以获得 45 分,结合数轴上费用的可分段性对建模图进行分治优化则可以获得 100 分。上述部分分做法以及费用流的建模基础与优化思路可见 详细的题解科普 (小编懒得再敲一遍了)。

本题是否存在模拟费用流解法?

这一点主要是因为本题 1 秒的时间限制对于经过了分治优化建图的 SSP 增广费用流依旧十分严苛。再加上本题的建模图一定程度上类似经典的老鼠进洞模型 使得小编有了这样的思考。但是小编脑子不好使,模拟费用流这辈子是学不会了。因此留作 open problem 与大家进行讨论。

(当然也存在另一种可能,就是本题在 OJ 部署时忘记改默认时限了。先例就是清华考研机试 2023 T2 在 OJ 上的时限为 1 秒,但是 tuack 题面时限为 3 秒。赛时对此题的重新评测也导致当时本就拥挤的评测等待队列更加雪上加霜。)

清华推研机试复刻组 2025 招新公告 & 比赛预告

2025-01-24 09:36:57 By CYMario

前排提示: 本次活动的举办主体“清华推研机试复刻组”是来自清华的民间团体组织,与清华大学学生算法协会没有任何直接关系。

清华推研机试复刻组招新赛

“清华推研机试复刻组”一直在致力于针对清华大学计算机科学与技术/网络空间安全/软件工程专业的考研/优秀大学生夏令营/预推免的上机考试题目进行数据复刻,为广大准备清华考研/保研的同学提供高质量的真题练习渠道与自测效果。本次招新活动系列比赛的核心目的之一是在于选出有能力且有意愿参与清华推研机试复刻组后续工作的成员。

本公告只做一些简要介绍,更详细的招新公告见下方链接。我们在此提前祝大家新春快乐!欢迎各位未来有意向参加清华推研的同学们以及各位算法竞赛爱好者参与其中,希望大家玩得开心!也希望大家可以将本场活动推广给身边同样准备清华推研的同学或算法爱好者们!

如果有意向加入我们的项目运维/题目复刻/验题等工作,欢迎按照招新贴中提供的联系方式和要求与我联系。我们非常希望能得到大家的帮助,也诚挚地欢迎各位有能力有想法的同学能够加入我们(不限身份,非清华学生也没有关系),一起将这个项目做得更好!

本次招新活动包含一场推研真题虚拟参赛(VP)和两场正式赛。其中正式赛的两场成绩将作为我们的筛选标准。具体资格线详见两场正式赛的比赛描述。

关于比赛答疑等信息,请加QQ群 515201605,入群理由填写“赛时答疑”即可。赛时的答疑,以及针对紧急事项采取的临时解决方案将会在第一时间于群内发布。

预热活动:推研真题虚拟参赛

本场比赛为清华考研机试 2024 虚拟参赛(Virtual Participation),采用题目为清华考研机试 2024 一志愿场次的原题,按照题面数据范围严格复刻数据。时长为 4 小时,共 3 题。任何人均可报名参加。欢迎各位准备清华计算机类推研(考研或保研)的同学们参加,检验自己当前的程序设计能力。本场同时也作为后续两场正式赛的测试赛,不计入实际成绩。

正式比赛

本次正式比赛将于 2 月 1 日(day 1)、2 月 3 日(day 2)进行,任何人均可直接报名参加。希望参与我们工作的同学不做强制要求,根据自己时间情况参与任何一场即可。同时我们也欢迎准备清华推研的同学与算法竞赛爱好者们在这里和大家一起同台竞技,玩得开心!

预热赛与 2 场正式赛的预热活动的实时榜单,以及正式赛 Day 1 的讲评(比赛结束当晚 7 点)将会通过 B 站进行直播,网址:https://live.bilibili.com/11783320

其他说明

本次活动正式赛使用的题目均为尚未进行复刻并向公众公布的清华往届推研机试题目,我们承认本次使用题目的原始版权均归清华大学计算机系所有,因此本次系列比赛没有收取任何赞助或其他资金支持。

清华推研机试题目的命题风格类似于专业级 CSP 认证不是 CSP-J/S,也不是信息学竞赛)。在题目考察的知识点难度最高可以对标信息学竞赛的省选或 NOI 的前提下,简化问题建模与思维考察难度,考察重点以代码实现为主(俗称“码农题”)。想了解有关清华推研机试的具体内容,可以参见本人在知乎撰写的以下内容:

本次活动的比赛均为个人赛,赛制为 IOI(实时评测,每题取最高得分计入总成绩)。总成绩从高到低进行排名,总成绩相同时以到达最终成绩的最早时间作为罚时,降序进行排名(与洛谷默认排行榜可能会有出入)。我们会对重新统计榜单后公布正式赛通过资格线的选手排名,当你参加正式赛即表示你知晓并同意自己的 id 可能出现在公开榜单上。

为保证参赛公平,请勿在正式比赛期间与他人讨论或公开发布题目解法或代码,或使用 AI 辅助写程序,或多人共号参加比赛。一旦发现上述或其他在参赛规则中提及的违规行为即取消成绩。


清华推研机试复刻组介绍

项目前身

“水木清研”小程序是由清华计算机类考研(专业课 826 计算机基础综合)的上岸考生开发的半盈利性质的小程序,提供初试与复试的知识付费服务。我们最大的初衷是为所有的 826(原 912)考生提供一个优质的学习、交流、知识传承的平台。

其中“机试训练营”付费项目于 2023 年 2 月正式启动,由“水木清研”站长 目鱼石 与管理员 CYMario 共同负责。我们免费向考生提供精选练习题以及从 2014 年开始的清华考研机试真题的评测链接,仅题目文字解析和代码标答作为付费服务。

从 2024 年开始,交由 CYMario 全权负责,负责业务也从原本的考研机试(春季推研机试)扩展到所有可以考据的推研机试(包括但不限于预推免、夏令营、留学生推研机试等)。

从 2025 年 5 月开始,“水木清研”将停止“机试训练营”付费项目的运营,将相关资料逐步开源。原“机试训练营”项目组正式转为开源组织“清华推研机试复刻组”。

项目内容

我们在持续进行往届推研机试题目的复刻,意在为准备推研机试的同学们提供真实的模拟练习环境。除了 2016/2017 年的 4 场推研机试采用 github 清华大学计算机系课程攻略开源的官方数据之外,其余题目均严格根据题面数据范围自造数据,可以提供相对准确的评测结果。目前我们的题目部署依托于洛谷,评测链接以个人用户题目的形式免费对外开放。

我们的复刻工作在准备清华推研的学生当中取得了广泛的好评和认可。我们在 2024 年秋季也与清华软院科协达成合作,在软件学院并入计算机类推研机试的首年,为软院科协组织的保研机试模拟练习提供了题目与数据支持。

目前我们已经完成了超过 40 道清华推研机试题目的复刻工作,可以通过下方“水木清研”小程序的“机试训练营”部分了解我们的现有成果(仅浏览工作成果与评测链接的话无需购买该项目)。

SMQY

团队招新

自 2025 年起推研机试复刻组独立之后,我们计划构建新一代的机试复刻团队。考虑持续定期在各位算法竞赛爱好者中招收有意愿完成项目运维、收集推研题目、复刻题目数据(造题)、验证复刻数据(验题)等工作的同学。具体事项可以见其他平台发布的招新贴。

期待你的加入!

CYMario Avatar