比赛进行的时候你应该干什么?
这里面可能有很多不准确甚至不正确的地方,欢迎来 D 我 QAQ
有什么想补充的欢迎写到评论区!
相关好文推荐:
如何在联赛和省选中进行暴力和骗分?——听取 MLE 声一片
NOIP 24 小时——华法琳血怒 / UruhaRushia
写代码 / 考场时需注意的细节——Pethly_Cat
比赛注意点及技巧(云剪贴板)——Eason_AC
一些竞赛注意点及技巧——End_Dragon
如何干爆旁边人的心态(雾)——ClCN / Sol1(提醒:挂上来这篇文章不是让你祸害别人的,你可以按照上面的情况来想办法反制)
标题:比赛进行的时候你应该干什么?
未进入赛场前
- 联系你的教练,问问赛场上能不能带水和食物。如果让就跳转到 2,否则从 3 继续。
- 购买好水或饮料,咖啡(如果你需要带的话),一些糖果和巧克力等,
让你在比赛的时候不至于渴死或累死(x)让你在比赛的时候可以保持精力和体力,以及让你有上厕所的时间。别带薯片榴莲酸辣粉这种有浓郁味道或很大响动的食品什么的,这样不好。 - 一定记住你的比赛时间。如果你看到本文的时间距离你比赛的时间剩下一周之内,跳转到 4,否则跳转到 5。
- 不要追求快速的学习了,没有任何意义。越是急越容易挂分。
把模拟赛打好,重点练习暴力、模拟和部分分、骗分,这些对你的考试作用更显著(原因显然,你在考试之前现学的数据结构和算法什么的并不一定可以大于80\% 概率写出来,不如把该拿到的分拿到)。
把你学会的、理解了的算法和数据结构什么的再去看一看。已经会了的东西不要忘记。
改题。复盘,改题。一定要改题,你需要抱着「考试的时候可能会考到出过的题」的心态去对待你做的题和模拟赛。 - 把大纲看一遍,看一下你有哪些东西还不会。若时间够用,建议系统的学一遍;若时间不够,问一问网上或者学长你不会的那些东西里什么出现频次最高,然后你就针对性开始学习。
特殊内容:关于报名课程
前排说明一下,没人让我打广告。
我个人建议,
如果你的学校很弱又没有组织集训之类的,你又很想冲刺,建议洛谷网校,不要把你自己看的有多么厉害,除非你真的很厉害,这个由你自己评估,我尊重每一个人的选择。自学成功的并不占多数。
如果你完全自学
如果你的学校有组织集训,你又很想冲刺,建议跟住学校,谁都知道网课的效率可以多么低下。
如果你压根没有冲的意愿,抱歉,我建议你别交报名费。
比赛前
别听老师搁那吵吵不要动鼠标键盘。你一定要动一动,但是啥也别打开什么的。你一定要测试一下你的设备。如果发现故障就立刻报告,别憋着。不要因为设备问题搞崩了你比赛的心态。
然后把你的键盘放到一个舒服且合适的位置。把你带进去的食物和水放到一个你认为舒服且合适的位置。
静下心,给自己一个浏览一下整个四道题的念头,别干傻事。
想一下对拍怎么写。别忘了。
比赛开始时
首先你要先看一下 CCF 给你的 pdf 文档。一定要看四道题和编译选项。
编译选项一般是 -O2 -std=c++14。你可以记不住,因为你可以复制。一定要看!一定要看!一定要看!
四道题全都浏览一遍,把能骗的分骗出来,暴力程序全(指
upd:由于和机房同学吵了一架,我把我的观点说出来:
你写的暴力有什么用?我随便列出来两条
首先你必须要写对拍。除非你实力达到了一定水平能保证说这种破题能一遍 A 穿,你必须要写一个对拍拍出来可能的错误。不对拍这个坏毛病葬送了竞赛生涯的好多人,除非说你一定能过,否则一定要对拍。而写对拍就需要用到一个暴力程序,你不得不写。
你不会做的题需要骗分,你需要打一个暴力程序。你总不能说这分你不要了吧?你用写暴力的时间能 A 一道题吗?不能吧?你也必须要写。甚至我的血淋淋的教训就是我 t1 花了很长时间(大于考试时间的一半)来写,t2 简单分讨了下,然后剩下的暴力都没打,CSP-S 才一百多分,写的 t1 三十分都不到来着。
反正我都要退役了,我也干涉不了你们什么,你们自己衡量吧。
比赛进行时
编译命令
编译选项一般是 -O2 -std=c++14。你可以复制。一定要在编译的时候加上。
你可以看看这个:https://zhuanlan.zhihu.com/p/393419013
-
-D[str]:例如说-DONLINE_JUDGE就相当于编译的时候#define了一个ONLINE_JUDGE。你可以在输出中间变量的前后加上#ifdef xxxxxx和#endif,省着你忘记删除之类的; -
-Wall:不仅报编译错误,还报警告,一定要背下来(我是这么记的:-W+all(-W(arning)+all)); -
-Wextra:警告一些更不易发现的错误,建议背下来(我是这么记的:-W+extra(-W(arning)+extra)); -
-fsanitize=address(仅 Linux 有效):检查一些与地址相关的错误,如下标越界等,建议背下来,但是我没背下来;注意使用这个编译出来的程序效率没有意义(指开启这个编译选项会影响程序执行效率,下同); -
-fsanitize=undefined(仅 Linux 有效):检查代码中的未定义行为(UB)。因为编译命令里有一个-O2所以你的未定义行为导致的问题可能会更加严重和突出,强烈建议背下来(我是这么记的:-f+sanitize+=+undefined,-f+ 消毒 +=+ 未定义);注意使用这个编译出来的程序效率没有意义;
upd:由于和机房同学(初中一二年级)吵了一架,我把我的观点说出来:
为什么你要去记这一部分东西
你知不知道啥是 UB? 你能不能人眼检查出来 UB? 你能不能一次就不写出来任何 UB?
不能?背下来检查 UB 的东西,因为开着 O2,UB 会让你死不瞑目。
运行程序
name arg1 arg2.......
其中注意一些读入和输出文件的不用 freopen 的方式:name < name.in > name.out
其中 < name.in 表示从 name.in 读入,> name.out 表示输出到 name.out。
参数里还可以放奇怪的东西,例如说 gen 100 50 > name.in。在讲对拍的时候会提到。
对拍
强烈建议,写完暴力和正解的那一刹那立刻去拍!
忘记拍…这个我倒是没怎么遇到过的说x
这么说的话也可以吧 没准就能调出来呢 就是对心脏不太好(
——Sol1(ClCN)
对拍由 sol.cpp,选手程序 name.cpp 和数据生成程序 gen.cpp。
把你的数据生成器稍作修改
稍作修改你的 gen.cpp:把 int/signed main () 改成 int/signed main (int argc, char** argv)。argc 是传入参数的数量,argv[][] 是你传入的所有参数。然后写一个 eval 函数:
inline int eval (char* arg) {
int l = strlen (arg), x = 0;
for(int i = 0; i < l; i++) x = x * 10 + arg[i] - '0';
return x;
}
或者直接使用 C++ 自带的函数 int atoi (const char* str)
或者 sscanf (str, "%d", &x);
然后在主函数里写
int n = eval (argv[1]), m = eval (argv[2]);
就能实现不需要反复来编译 gen.cpp 或者手动输入来修改数据规模,若要使 name.in 里,就可以使用 gen 100 50 > name.in。
参数之间用空格分隔,gen 是运行文件名,也是第一个参数(第 100 是第二个参数(第
对拍脚本
每次对拍之前我都建议你编译一下:g++ name.cpp -o name -O2 -std=c++14 -Wall -Wextra。
接下来运行数据生成程序:gen [args] > name.in;
接下来运行选手程序:name < name.in > name.out;如果你的程序里有了 freopen 就使用命令 name;
接下来运行暴力程序:sol < name.in > name.ans;如果你的程序里有了 freopen 就使用命令 sol;
最后对比差异:diff name.out name.ans。
在 NOI Linux 上的实现:无限循环对拍直到出错 喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵
在 NOI Linux 上的实现:无限循环对拍直到出错 喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵
在 NOI Linux 上的实现:无限循环对拍直到出错 喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵
上厕所
我必须把这个单独列出来。
首先你可能无法保证
考试结束前 10min
你要是感觉马上就能调出来一个程序,别调了,你调不出来。
如果你有把握翻盘,你加油 qwq(「我倒是觉得不一定 最后两三分钟翻盘的我看见不少的」——happydef,感谢)
除非说你就差一个字就调完了,你既然已经调了很长时间了,你还需要调很长时间。
要是自己对自己有强大的自信可以无视。
检查:
- 你
freopen加了没?错了没? - 调试语句有没有删,或者用
#ifdef和endif括起来? - 你的文件名是否正确?存储位置是否正确?
- 保存一下 编译一下 是不是都能过编译?
- 你有哪些程序没写?把你的暴力程序改成要提交的程序的名字。
- 你有哪些写了正解和暴力的程序没有对拍?拍一下。
为什么在结束前 10min 要对拍?有时间对拍吗?你有这些问题的话看看后面
- 你是不是没有看到「写了正解和暴力的程序」的这个条件?对拍程序熟练的话 1min 就能写好,有写好的可以直接用
- 如果数据就是很少的数,例如说
n 和m 这种,很好生成,不用 2min 就能写完。运气好你能拍一百来组。- 实际上还是要看你的个人情况,但是我建议你在力所能及的范围内拍一下
考试结束前 3min
再次浏览上述内容。编译一下。编译一下。
保存你的程序。
你再做什么其他的东西已经没什么意义了。拍都没时间了。
放松放松,你已经尽力了。
考试结束前 1min
放松一些,准备迎来终章。
关掉你的编辑器窗口,关掉所有占用你程序的东西。
放松一些。你已经尽力了。回去吃一顿大餐吧。疫情,两点一线
考试结束
别动电脑了。收拾好东西。这次的考试就结束了。
放轻松,不要影响到你的生活。
然后或许还要下一阶段集训,或许要去学文化课,加油。
祝你考试成功。