1. 赛事背景与个人定位
作为一名计算机专业研究生参加BNU-25信息学奥赛,首先要明确这类赛事的特殊定位。不同于常规的ACM/ICPC竞赛,BNU-25系列赛事往往更注重算法思维的系统性考察,题目设置上偏向基础算法的变形与组合应用。根据往届参赛经验,day4的题目通常会涉及动态规划的高级应用、图论算法的组合使用以及一些需要数学建模的综合性问题。
我选择参加这次比赛主要基于三个考量:一是检验研一阶段算法课程的学习效果;二是为后续科研中的算法设计积累实战经验;三是通过竞赛认识更多同领域的优秀同学。特别值得注意的是,研究生阶段的竞赛准备与本科时期有显著不同——我们更需要在有限时间内快速识别问题本质,而不是盲目套用模板代码。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 赛前准备策略
2.1 知识体系梳理
针对day4可能出现的题型,我重点复习了以下内容:
- 动态规划:树形DP、状态压缩DP、数位DP的经典模型
- 图论:网络流中的Dinic算法、最小费用最大流的实现技巧
- 数学:组合数学中的容斥原理、博弈论中的SG函数应用
- 数据结构:可持久化线段树、块状链表等高级结构
特别准备了一个"急救手册",记录了各类算法的核心代码片段(约20-30行)和关键注释。例如Dinic算法的当前弧优化实现、带滚动数组的DP状态转移模板等。这个手册不是用来抄袭的,而是在思路清晰时快速实现细节的工具。
2.2 环境配置优化
比赛采用标准的PC^2系统,但允许使用本地IDE。我的环境配置方案:
- 编辑器:VS Code + Competitive Companion插件(自动解析题目)
- 代码模板:预置了快速IO、常用头文件、调试宏
- 测试脚本:Python编写的自动化测试框架,支持:
- 随机数据生成
- 对拍验证(brute force vs optimized solution)
- 时间/内存消耗统计
特别注意在赛前测试了编译选项的优化效果,例如g++的-O2与-std=c++17的配合使用。还准备了应急方案:当遇到环境问题时,立即切换到vim+命令行编译的备用模式。
3. 比赛过程实录
3.1 题目概览与策略制定
开赛时获得4道题目:
A. 最大权闭合子图变形(网络流)
B. 状态压缩DP+矩阵快速幂优化
C. 树上莫队
