跳到主要内容

CSP第二轮考前指南&拿分技巧

一、 考场流程与纪律

  1. 听从指挥:认真听监考老师讲解,确认试题位置、选手目录、文件夹结构要求。
  2. 大胆提问:遇到任何问题(解压失败、环境问题、规则不清、草稿纸不够等),立即举手询问
  3. 最终提交“三查三对”
    • 查目录与文件:位置、名称是否符合要求?
    • 查代码版本:提交的是否为最终正确版本?
    • 查输入输出freopen是否正确?调试输出是否已删?

二、 核心心态与全局策略

  1. 目标明确

    • 部分分也是分! 暴力、特判、小范围数据,能拿的分一分不丢。
    • 不求AK,但求无憾。目标是分数最大化,而不是解出所有题。
  2. 时间分配(3.5小时黄金法则)

    • 开局(约5分钟):通读全卷
      • 快速浏览所有题目,手算样例,确定做题顺序。
    • 第一阶段(约0.5小时):稳住T1
      • 优先解决最容易的题目,建立信心。
    • 第二阶段(约1-1.5小时):拿下T2
      • 分块实现,逐个功能测试。
    • 第三阶段(剩余时间):保T3,争T4
      • T3先确保暴力分,再考虑优化。
      • 在T1、T2稳固的前提下,尝试T4的暴力(如DFS)。
    • 收官(最后20分钟):停止开发,全面检查
      • 停止编写新代码和修改逻辑,只进行静态检查。
  3. 切换原则

    • 同一题10分钟没思路,或30分钟无实质进展,果断切换。

三、提交文件组织规范

alt text

alt text

输入输出数据读写

alt text

四、 技术硬伤规避

【代码 马虎错误】

  • 文件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 的文件名或模式写错。

祝各位选手沉着应战,稳定发挥,取得理想成绩!

*学习笔记

暂没有学习笔记,快来抢first blood !