看到一句话很顺口,
"北有清北,南有深大"。
这几天心态跌宕起伏,感谢老师的帮助以及鼓励,很高兴能够拿到资格参加CCSP全国赛,感觉像是国内算法领域大学间的诸神之战,
比赛时间长达12小时+,从日未出到夜已深,深刻地感受到中国顶尖学生的过硬专业能力,
其比赛分数全程遥遥领先。虽然没有拿到奖牌,但是也没有遗憾了,毕竟确实实力悬殊。
期待下次在赛场上相遇
以上是我比赛完发朋友圈并留下的一条评论,深圳很美,深大更美。
2021年的CCSP全国赛在深大举办,其实说实在的,我在去之前定下的目标就是:有分就行,若是拿奖便是天大惊喜
因为疫情原因,原定于11月举办,推迟到了12月15日。
而一直到12月15日仍然有很多参赛选手所处地区属于中风险地区,导致不能来参加比赛,以及还有很多选手因为各自学校政策又或是与其他比赛考试冲突而来不了,最终导致全国赛参赛选手由2020年的一千人下降到了今年的220人左右。我感觉应该都是能拿奖的大佬才坚持来参赛,而拿奖又是按百分比的(10%金20%银30%铜),所以今年的全国赛难度可以说是大大增加了。
那么说回比赛:
比赛那几天发生了一些个人事情,经历了一些思想波动,心很累。
赛前一天允许进深大考场参观,我们团队去了,深大很漂亮,每栋楼都装修得很上心、有特色,学习氛围也很好,校园里没什么人,自习室却坐满了人。
赛前一晚11点左右睡的,做噩梦半夜醒了一两次,六点半起床,七点半到了深大(沧海校区)赛场,成功坐在了我的考场座位上,座位上放了我的专属胸牌和一个带有CCF CNCC标志的书包,看起来挺不错的,目前的一切看起来都是那么顺利。
对了提醒各位是允许带纸质资料以及u盘的(鼠标键盘也可以自带),
但是不能把u盘插到别人电脑(千万不能,电脑会检测到然后你们两位都0分了,当时负责人是这么讲的),
如果插错电脑什么的一定要问一下负责人会不会出什么问题。
然后拿到系统登陆密码,进入考试系统,wtf系统怎么跟网上说的不一样了,也跟csp考试的虚拟机不同了,我之前用的codelite呢???看到一个vscode我知道这个可以编写我用的C++,但是研究了一下不知道怎么编译,好了可以开始慌了,于是一个个软件打开来看能不能编译CPP,好的全都不行,先深呼吸一下,努力回想之前看到同学是怎么用vscode编译cpp的,想了一会并经过不断尝试还是搞懂了:
vscode编译cpp文件方法:
先在桌面创建一个文件夹,然后在vscode里open folder,在里面创建cpp文件,
再在顶部菜单栏找debug或者run就行了,vs code是默认单文件编译的。
各位c++选手记住了!
万事俱备 只欠东风,随便敲了一些代码跑了下没什么问题,热身题试了下能提交就不想去做了,免得消耗我的脑力。开始发零食了,我来数一下:有两瓶农夫山泉、两小袋奥利奥、两块奥利奥长条的那种饼干、一袋雀巢速溶咖啡粉、一个一次性杯子、一个小包的洁柔纸巾、一个泡茶的红茶茶叶包、还有个果冻粉还是啥的没吃不记得了。可以看出我这篇是最细的ccsp全国赛攻略了吧哈哈哈。
放蹆的空间不够有点不舒服,换了几种坐姿,凳子还行,翻了翻书,又把送的CNCC书包拿到凳子上靠着,嗯~舒服点了,回过神来,什么时候键盘声这么大了?!?woc比赛原来已经开始了,时间已经9:03分了。
打开比赛列表开始看题目,前两题都比较短各两页pdf,后面三题好像都是每题五六页pdf,花了十多分钟每题都分析了一下,觉得前两题应该是相对简单的(赛后才得知很多大佬第二题都是0分,第四五题拿到了挺多分数,第二题原来是言简意赅杀人不见血呜呜呜)。还记得第一题的题目开头是:“小P来到西西比亚岛旅行,玩起了合并最近数的游戏…”。我tm当时就在想,这小P是是不是疯了,什么游戏不玩,玩这个鬼游戏。
于是我开始血战第一题了,感觉题目不是很深,暴力破解拿到70分应该是比较容易的,但我没有马上写暴力而是继续分析,想了好几种方法选了觉得最可行的一种(优先队列 搭配 map为主要数据结构)(其实代码实现过程我的思路也有改变,但这时候已经把这题大部分难点都想通了),此时好像已经10:00+了吧,但并不慌,因为我觉得我想到了不错的对策,于是开始实现我的思路,代码实现过程中发现题目隐藏的问题越来越多,代码也越来越乱,没想到很多功能需要重复利用,后来实在受不了又重新去封装函数。
时间来到11:50,轮到我这一批去吃饭了,把我们带到了另外一个课室领饭盒,排骨很少的排骨饭(是我吃过最差的盒饭了,后来我们老师也说深大真实抠)+几个橘子+一罐可乐,怕肚子不舒服就没吃橘子和可乐,那些学霸吃的很快,一坐下就猛吃(吃完的可以先回考场),我觉得我需要放松一下脑袋已经很紧绷了虽然一上午还是0分,甚至看了几眼报纸是深圳的什么政策又改了(课室的桌子上垫着报纸吃饭)。
回到考场,继续第一题完善我的函数封装,继续实现我的思路,其中想到些问题都注释了下来,以免后面忘了。
时间来到13:00+,已经开赛4小时了,由于我之前是纯C选手,近一个月才开始学习C++,对很多容器都不熟,需要不断的在另一个文件写程序测试哪个容器能不能按我想的用先,特别是迭代器,我几乎没用过,之前刷的题都是照着书敲模板就可了,这题却需要非常灵活的运用迭代器(也可能只是我的做法需要)。
由于我对C++容器以及迭代器并不熟练,接下来的三个小时里,vs code的 invalid pointer 提示从来没有停过,我已经裂开了!!!到底我哪里写错了啊,期间无数次想过 要不要换种方法这个迭代器我用不下去了啊!又或者要不要重新推翻重写一次理顺思路,代码量已经来到了150行+。
现在是比赛开始的第七个小时,我已经接近崩溃了,还是0分,我已经在草稿纸上完完整整的用手和脑子把给出的两个输入用例都算了一遍了,终于功夫不负有心人有心人,
ccsp全国赛最重要的因素之一绝对是心态,每一道题都是专业团队精心设计的,
如果你的水平并不是很高,一上午一题都没AC绝对是很正常的,至少好几年都是这样,
我也是因为赛前看了很多大佬的感言,比赛才能稳住心态
还有提醒各位一些我比赛摸了半天才弄清的东西
C++98的标准:
set容器通过迭代器 只能读!不能写!
map容器通过迭代器 能读键!能读写值!(键和值都可以是结构体)
如果你在某些编译器跑过了以上操作,说明你用的编译器并非绝对标准,可能编译时有帮你自动修正代码
当时由于我对C++并不熟悉,研究这个那个鬼容器就花了好多时间。
在时间到了16:30左右时,我终于修好了所有bug,测试样例也都跑过了,松了一口气,代码赋值提交上去,比赛的代码接收很快,马上就开始running了(比csp认证快多了),我盯着屏幕,case1 ~ case4 ~ case7 ~ case 10 ~ case 13 啊怎么分数还是0,一两秒的时间内心态已经掉到底谷,case13 ~ case16 ~ case20 ,然后 绿色底的 accept 出现在了我的屏幕上,分数变为100,啊啊啊卧槽,我交的第一发就AC了!!!原来它是跑完才出分数的和csp不同!激动得我差点叫出来,好吧已经叫出来了“yes!”还好不是太大声,于是高高兴兴的去厕所了,出去时有深大的学生志愿者看到我还说:“这个人笑这么开心一看就是很高分的了”,比赛到了七个多小时才AC一题还能笑这么开心的人也只有我了,不过我水平就这样有什么办法呢哈哈,感受到了一丝铜牌的希望,因为听说往年一百分基本都能拿奖。
于是按照我一开始的计划开始猛钻第二题
实际上我当时应该去看第四五题的,题目长就没太敢细看,大家要注意每题都要认真分析一下,
有些题目虽然长篇大论但还是能拿到一些分数的,反而有些言简意赅的题目可能并不容易做出来
还有提醒各位一些我比赛摸了半天才弄清的东西
C++98的标准:
set容器通过迭代器 只能读!不能写!
map容器通过迭代器 能读键!能读写值!(键和值都可以是结构体)
如果你在某些编译器跑过了以上操作,说明你用的编译器并非绝对标准,可能编译时有帮你自动修正代码
当时由于我对C++并不熟悉,研究这个那个鬼容器就花了好多时间。
接下来的四个多钟里,一分都没拿到,其间六点钟左右吃的晚饭,就不详细描述了。这篇博客写得太长了,写不动了已经哈哈哈,就大概这样子吧。
比赛的时候有实时的排行榜可以看,所有选手都能看到,比赛结束前一个小时会封榜(封榜后分数变化仍然会影响拿奖那些),我当时100分应该是排在170左右,今年全国赛只有220人左右参加,排120左右能拿奖。后面这个图应该是某道题的得分情况,平均分44.9,过了太久了忘了。最后最后,我的学校团队排名第15。
第二天去参加了CNCC
有什么问题的话可以评论