- 分享
CSP-J/S 复赛防爆零
- @ 2025-10-26 16:36:57
CSP-J/S 复赛防爆零【终版清单】
一、策略但并不策略
- 先拿分,再想满分:没思路的话,先写能跑的暴力/部分分,不要空题。
- 先易后难:先拿 T1/T2 的基本分。
- 死磕:T3/T4 卡 15–25 分钟无进展就可以尝试写暴力,先保分。
- 预留检查时间:最后 15–20 分钟仔细核对。
- 开题顺序:快速扫题,评估难度以及合不合口味,安排个人节奏。
- 把所有题先扫一遍 → 定顺序 → 大概率是先 T1/T2 → 再 T3/T4。
- 正解想不到的话,先写部分分:小数据暴力/分治为主,后面再优化到正解。
- 时间:单题不要卡太久,收尾的时候检查与保存,不再大改结构。
二、文件与 I/O
-
目录与命名:按题面创建“题目总文件夹/题目子文件夹/指定文件名.cpp”,逐字符匹配,注意大小写。
-
显示扩展名:避免
xxx.cpp.cpp或漏写.cpp。 -
文件重定向(放
main开头,提交前勿注释):freopen("题目名.in", "r", stdin); freopen("题目名.out", "w", stdout); -
保存习惯:随写随存(Ctrl+S),防止卡死/断电/误操作。
-
省份差异:以现场监考与官方口径为准(盘符/目录/工具版本)。
三、代码规范
- 主函数:
int main(){...},结尾return 0;,不要void main。 - 数据类型:涉及乘法/范围可能超过
1e9用long long;必要时高精或谨慎使用浮点。 - 数组容量:按上界 +冗余(如
N+5/N+10)以防越界与哨兵位。 - 变量初始化:定义后立刻初始化;循环内复用变量要重置。
- 命名冲突:避免与库函数/关键名重名,比如std里变量和属性冲突的全局变量名:
min/max/index/next/map/pow/y1等。 - 关流:
ios::sync_with_stdio(0); cin.tie(0);cout.tie(0)
- 边界:判空/判零/尺寸检查;特判
n=0/1、全相等、全负/全零等/不要除0。 - 时空评估:1 秒循环尽量 ≤ 1e8 次;内存别逼近上限(单数组元素量级建议 ≤ 1e7)。
- 返回值:函数类型和返回值 要对应上,不要写个int函数类型,没有返回值,windows下不报错,导致全部re 0分
- 格式一字不差:空格/换行/大小写/固定格式完全一致;样例有空格就输出空格。
- 清理调试:提交前全局搜
cout/printf/cerr/debug并删除或注释。 - 编译无误:本地用比赛环境编译通过。
四、检查清单
-
文件名/路径 与题面完全一致;大小写正确、位置正确。
-
freopen 文件名无误;
"r"/"w"模式正确;未被注释。 -
本地编译:在指定编译器/标准下 0 报错。
-
无调试残留:
Ctrl+F搜cout/printf/cerr/debug清理完毕。 -
样例全部通过:逐字符比对输出。
-
边界自测:
n=0/1、极小/极大、全同、随机小样对拍。 -
多组数据:
while(T--)相关变量 每组重置。 -
时空合规:不会越时/越界/爆内存,必要时降常数或剪枝。
-
返回值:
return 0;;仅保留需要评测的那份源码在指定目录。
五、常见爆炸 TOP 10
freopen注释/文件名大小写不匹配/路径错误。- 输出多/少空格或多/少换行;
- 忘记
long long导致溢出。 - 越界访问(
for边界、vector/array下标、memset尺寸)。 - 变量未初始化或多组测试未重置。
- 使用库名/关键名作为变量名导致调用歧义。
- 双精度比较直接用
==导致误判。 - 读写混用未
sync_with_stdio(false)/cin.tie(nullptr)导致超时。 - 最后时段还在大改代码结构,导致编译不过或逻辑爆炸。
- 提交了错误目录/错误文件。
六. 主程序模板
#include <bits/stdc++.h>
using namespace std;
int main(){
freopen("题目名.in", "r", stdin);
freopen("题目名.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
return 0;
}
0 条评论
目前还没有评论...