CSP第二轮考前指南&拿分技巧
一、 考场流程与纪律
- 听从指挥:认真听监考老师讲解,确认试题位置、选手目录、文件夹结构要求。
- 大胆提问:遇到任何问题(解压失败、环境问题、规则不清、草稿纸不够等),立即举手询问。
- 最终提交“三查三对”:
- 查目录与文件:位置、名称是否符合要求?
- 查代码版本:提交的是否为最终正确版本?
- 查输入输出:
freopen是否正确?调试输出是否已删?
二、 核心心态与全局策略
-
目标明确:
- 部分分也是分! 暴力、特判、小范围数据,能拿的分一分不丢。
- 不求AK,但求无憾。目标是分数最大化,而不是解出所有题。
-
时间分配(3.5小时黄金法则):
- 开局(约5分钟):通读全卷
- 快速浏览所有题目,手算样例,确定做题顺序。
- 第一阶段(约0.5小时):稳住T1
- 优先解决最容易的题目,建立信心。
- 第二阶段(约1-1.5小时):拿下T2
- 分块实现,逐个功能测试。
- 第三阶段(剩余时间):保T3,争T4
- T3先确保暴力分,再考虑优化。
- 在T1、T2稳固的前提下,尝试T4的暴力(如DFS)。
- 收官(最后20分钟):停止开发,全面检查
- 停止编写新代码和修改逻辑,只进行静态检查。
- 开局(约5分钟):通读全卷
-
切换原则:
- 同一题10分钟没思路,或30分钟无实质进展,果断切换。
三、提交文件组织规范


输入输出数据读写

四、 技术硬伤规避
【代码 马虎错误】
- 文件IO:确认
freopen文件名、路径、模式 ("r"/"w") 完全正确。 - 提交状态:提交前,确认已删除所有调试输出,文件IO处于可提交状态。
- 输出格式:检查大小写、空格、换行是否与题目要求完全一致。
【代码与编译】
- 变量名:禁用
max, min, swap, y1, x0, time, next, pipe, hash, left, right等易冲突名称。 - 数组大小:
- 首先在头文件后就定义一个数据上限常量,如
const int max_n = 2e5+5; - 在全局区定义数组,开足够大(如
max_n + 5) - 警惕二维数组内存占用是
行*列*类型字节数。
- 首先在头文件后就定义一个数据上限常量,如
- 容器安全:从栈、队列等容器
pop前,必须先判断是否为空。
【数据与运算】
- 数据类型:涉及大数、乘法、累加,果断使用
long long。 - 多组数据:必须重置全局变量、数组和容器(如
clear()、memset)。 - 边界测试:自造数据测试空输入、最小/最大边界等特殊情况。
最后:爆零、扣分易错点检查列表
这是一个非常具体和实用的编程竞赛常见错误清单:
最好背下来,考前就写到纸上,每题昨晚检查时逐条核对!
- 数组开小:例如,题目数据范围,特别注意队列的数组上限和二维数组数组上限。
- 赋值=与相等==混淆:在条件判断语句中错误地使用了赋值运算符。
- 不删除调试代码:提交前未移除用于调试的打印输出语句,影响正式输出。
- 未使用 long long:在数据较大时,仍使用 int 导致整数溢出。应使用 long long。
- 忽略矩阵维度:在处理 n*m 的矩阵时,错误计算索引或内存。
- 循环方向错误:在需要倒序循环时,误写为 i-- 或循环条件错误。
- 使用奇怪/保留变量名:如 y1, y0, left, right 等,这些可能与标准库函数或关键字冲突。
- 未检查容器空状态:在从栈、队列、优先队列中弹出(pop)元素前,未判断容器是否为空,导致运行时错误。
- 数组越界:访问了数组范围之外的内存。
- 在 main 函数内开过大数组:局部变量(在栈上)的空间有限,大数组应定义为全局变量。
文件读写错误:freopen 的文件名或模式写错。
祝各位选手沉着应战,稳定发挥,取得理想成绩!