CSP注意事项
前言
一篇写给自己的帖子,有些内容为转载,也有些是自己经历过的血的教训。
参考内容最后都会标出,别喷我啊啊啊!
准备工作
1.比赛前一天晚上请准备好你的各种证件以及笔等基本工具(我的身边就有因为没带准考证而爆炸的例子)。
2.\(CSP\) 是允许带食品和饮料的,所以可以带一些水和巧克力等进入考场补充体力。
3.比赛开始前请先调整你的屏幕分辨率到你喜欢的大小。
4.比赛开始前请把编译器的字体调为你平时惯用的字体。
5.在不影响视野的情况下,请将字号尽可能调大,方便查错(特别是一些毒瘤模拟或搜索)。
6.比赛开始前多敲敲键盘,顺手的键盘都需要敲打一番(提前熟悉键盘的各个键——经常会与自己学校的不一样,在自己学校比赛的请忽略这句话),这段时间里你可以先打好快读快写、头文件等模板。
7.根据个人需求并在合理时间内待在考场里,熟悉一下气氛。
比赛时
心态问题
1.要保持平稳的心态,相信自己:
我才是对的,他们都是错的,我能 \(AK\)。
2.比赛前保持好心情。
3.在情况多变的考试中,心态的调整非常重要,有可能会发生的突发事件有:
几个拍同时出锅,最后一秒极限拍出错,错过题意更新,机器出问题。
- 对于出锅/极限拍错,事实上最好什么都不做,你能拍这么久才出锅出题人能把你卡了就怪了,正确的做法是保存数据,考后去 \(hack\)。
- 对于错过题意更新一类的问题,我们要先通读题面与小样例,确定理解题意,如果发生了不是很清楚的情况,可以 询问工作人员/写暴力跑大样例。
- 如果机器出了问题,先不要慌,可以叫工作人员申请加时,你还可以多想一下题目,不一定会亏。
4.如果实在紧张,也许上个厕所冷静一下是个好主意!
5.如果你发现你旁边的人写得很快,放心,他的算法十有八九是错的。
6.走出考场后,永远别对答案,除非已经是最后一场。
关于码题
1.读题一定要仔细!!!请将题目通读完以后,再开始深入思考你认为最容易的一道题。
2.即使这道题再容易,也不要着急写代码,请先明确自己每一步要干什么后,再开始写,轻敌会是你最大的错误。
3.即使这道题看起来再没法做,也不要提早放弃,这个时候纸和笔会是你最好的朋友,自己尝试几个例子,也许你就会找到答案(实在不行就写暴力卡常或打表吧)。
4.写题的时候先在纸上写好大致的思路,仔细判断思路是否可行再编写代码。
5.认真仔细算时间复杂度,尤其不要把复杂度较低的代码给算成高复杂度(相信出题人不会卡你,就算卡你也只有一两个数据)。
6.不要浪费时间在一道大模拟或者大搜索上,对于大搜索,搞到一定的分数就可以不再剪枝,对于大模拟,可以考虑拿比较简单的部分分。
7.数学题或者找规律要在纸上写出来!
8.充分利用时间,一道题如果超过 \(15~min\) 没有任何思路那就下一道。
9.所以看到一道题就写暴力,暴力写完再写正解。
10.算复杂度:
- 如果在非入门级别比赛中看到一道能用比正解低一个 \(\log\) 时间复杂度级别的解法,好好想想出题人为什么把范围设置成这个(我不会告诉你有一次我用 \(O(n)\) 乱搞过了一道正解 \(O(2 ^ nn)\) 的题)。
- 内存要算的,最好在写之前算,不然写完发现 \(MLE\) 也就惨了,如果最后发现超内存了,就把数组开小一点,说不定也能拿一些分。
11.不要写完一道题就急着对拍,先通读所有题,把能写的分数都写出来再对拍。对拍不要耗太久,也许你的正解没错,暴力错了。
12.时刻记得自己擅长的和较不擅长的,让考试时利益最大化。
13.写完程序之后,请一定不要忙着编译,请一定要将你的代码从头到尾通读一遍,也就是静态查错,这是整个编程过程中最重要的步骤,有的变量重复调用问题调试的话,一个小时也看不出来,静态查错可以一下指出错误。静态查错请注意以下方面:
- 是否写上了
using namespace std
? - 数组开得是否够大?
- 变量类型是否正确?
memset
时,所填的sizeof xx
的xx
是不是匹配?大小是不是正确?记住memset
是按字节赋值。- 外层循环与内层循环的 \(i, j\) 是不是混用了?
- 输入数据都输入了吗?
- 这个程序是在执行你想让它执行的步骤吗?
14.通过样例后,请你一定不要放松警惕,因为样例并不能覆盖所有的情况,请自己设计几组数据,争取卡死你的程序。
15.如果出现问题,请你调试你的程序,请一定要分模块调试,不要从头跟到尾。
16.可以使用 #include <bits/stdc++.h>
!!!从来都是可以的!!!不需要背诵一大串头文件,万能头除了编译时间慢以外没有任何坏相处,而编译时间不计入运行时间!!!
17.代码保存在哪,是否需要建文件夹之类的,以考场上的 \(PDF\) 为准。不清楚可以问监考老师。
18.重要的事情说三遍,一定要写 freopen
!一定要写 freopen
!一定要写 freopen
!格式如下:
freopen("文件名.in", "r", stdin);
freopen("文件名.out", "w", stdout);
19.不要用下划线开头的函数,如 __gcd
和 __builtin_popcount
。自己定义的除外。
20.变量名避免完整的单词(hash, pipe, time, next
),以及 x0, x1, y0, y1
。如果要使用,可以简写(如 nxt
),加前缀(如 mytime, _time
),或者 define
掉(如 #define pipe guanzi
,但不推荐)。
21.不要忘记删调试语句。
22.定时存一存代码。写新做法时,不要把原本的做法删了:可能有些部分还能用上,或者可以用来对拍,或者你新做法写不出来(或想错了)时,原来做法至少还能帮你拿到一些保底分。
23.看清楚数据范围,该开 \(LL\) 的一定要开,如果空间足够就都开上 \(LL\)。数组空间不要开小,无向图开 \(2\) 倍。如果担心 \(0\) 写少,可以用 \(1e5 + 10\) 的形式。
24.有些输出方式,如取模,一定不要忘记写。模数尽量写 \(1e9 + 7\) 这种形式,不要抄错了。
25.abs
函数自己手写。
26.若需要输出 \(YES\) 或其它,注意大写问题(\(yes, Yes, YES\))。
27.当指数为整数时尽量不用 pow
函数。
28.scanf
类型记得不要写错。
29.最好不要用 floor
和 ceil
函数。
快结束时
1.当比赛还剩下 \(5 \sim 15\) 分钟的时候,请不要再改动你的程序,即使你怀疑它对你的一个输入给出了错误答案,因为你自己算出的结果也有可能是错的。
2.检查文件名是否写错。
3.检查是否打开文件输入输出。
4.整理好东西,离开时垃圾带走。
最后,请记住,\(CSP\) 不怕暴力,怕瞎算,不怕不会,怕不敢。
最后的最后,祝大家 $CSP~rp ++ $!!!
参考文献
https://www.acwing.com/blog/content/829/
https://www.acwing.com/blog/content/798/
https://www.cnblogs.com/ljy-endl/p/11768512.html
https://www.cnblogs.com/dysyn1314/p/13934854.html
https://www.cnblogs.com/codingxu/p/15433809.html
https://www.cnblogs.com/milkycoffee/p/csp-s-2021-zhuyi.html
https://www.cnblogs.com/skip1978/p/11861737.html
本文来自博客园,作者:FXT1110011010OI,转载请注明原文链接:https://www.cnblogs.com/FXT1110011010OI/p/16571764.html