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 xxxx 是不是匹配?大小是不是正确?记住 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.最好不要用 floorceil 函数。

快结束时

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

posted @ 2022-08-10 11:31  FXT1110011010OI  阅读(966)  评论(0编辑  收藏  举报