2020 CSP&NOIP 游记
CSP初赛
CSP初赛 Day -1
早上打了模拟赛,T2寒假正好做过,然而还是还是被踩Orz,郑外NB!。中午出校吃了大盘鸡和拉面,还带回来了三瓶可乐。
初赛知识点看了两页不(看)想(不)看(懂)了。(HA初赛不是有手就行?)。
晚上ATcoder手速+自闭场,英语还是太拉垮,读题浪费了不少时间,100min的比赛就写了10min题,剩下90min懵B(果然十分简单,九十分很难),但最后还是靠着手速拿到1500名,我还是太菜了QAQ。
CSP初赛 Day 1
考试前
既然都请一上午假了,那就不用上课了吧?!
翘了两节课在机房复习了一下初赛知识,主要看了一下二进制补码反码和各种计算机发展历史知识(结果都没考)。
因为姓氏有点奇特,报名系统把名字c开头的我放到了最后面。
于是,在考场的最后专门给我摆了张桌子,专业。
考试中
感觉今年的单选比较简单,拿到了满分,最后一道题比较好蒙。
然后程序阅读题,纠结了半天不必要的逻辑和语法问题,最后还错了,语文老师泪目。
完善程序题感觉难度适中,分数背包跟背包有个锤子关系,最后一道题该不会还是不会,随便写了写。
今年初试我做题速度格外的慢(去年从头蒙到尾能不快吗?),以至于很多地方没有思考清楚就瞎选了个上去,同时也有不少人坚持写题到最后一刻的(不像去年离收卷人都快走完了)。
考试后
出了考场没打算去上课,打算在机房淼一中午。看了网上一些dalao的讨论,大致对了对答案,发现蒙的基本没对,泪目。
CSP初赛 Day N
出分
找学弟要了成绩单,发现73.5分,河南第23,刚过ZJ线,但凡我多蒙对一个选择也不至于...
HA不出意料的有分就能过(也不知道全是选择判断的卷纸别人咋考的二三十分)。
通过这次考试,我发现我的阅读能力还是太弱了,也让我重新审视了自己(弱的本质)。
CSP复赛
CSP复赛 Day 1
到考场
因为一些事情推迟了入场时间,我在考前敲了对拍和快读,但是,我对拍A+B测试程序的时候,终端关不掉了。我叫来staff,但尝试关闭无果。他就说句我也没办法,走人了(我淦)。
结果考试期间对拍的窗口就一直开着,我还需要把我写的快读重新复制一份(因为开着终端程序运行不了),浪费了不少时间。
考试中
咱敢不敢弄点阳间的解压密码,我试了4次才知道带上括号,我大概花了25min浏览了一遍题目。
T1是大模拟,相对思维难度较小(这应该是人均100,必须得拿到,因为不少人肯定4h死磕T1)。
T2是二进制问题,应该是道结论题。
T3应该是道线段树加某个东西优化。
T4博弈论?,看到n<=10有40分感觉可以搞,后来发现不能。
T1
2:55左右开始码。
先写了日期一个一个往后推的暴力代码,用于对拍和计数,认真读题后调对程序大概3:40。
然后开始考虑优化时间,我先用暴力代码计算出了到1582年10月4日(一下简称时间节点)的天数n1,进行分段处理。
对于小于等于n1的r,用除法计算在r经过了多少个4年,然后一年一年算,最后暴力推日期。
对于大于n1的r,先减去n1再将时间初值设为1582年10月15日,用除法计算在r经过了多少个400年,然后一年一年算,最后暴力推日期。
写完并过了大样例(期间还打了输出和样例答案进行对比的的程序),然后与暴力挂着对拍时已经大概已经4:30了(感觉药丸)。
updata:(感觉人均100的题全省好像就4个人A了吧)我觉得有必要感谢一下出题人全家,尤其是他的母亲。
T2
读题花了好长时间,而且很迷惑,答案肯定是2^k-n(k与题目给的无关)啊。
看了看样例,果然如此,顿时猜到了结论,并过掉了大样例,调程序花了不少时间,(期间优化了巨量内存,还尝试了map写法)。
这时大概4:50,注意到了数据范围内的k<=64,发现需要特判,考虑了半天如何特判(这还用想),又花了10min。
T3&T4
写到T3大概5:00。认真读了题发现没我想得那么简单。
我看到函数调用,我冒出了离奇的想法,如果一个函数直接或间接调用它本事将会产生环。
那么就需要类似于降幂公式的数论知识解决该问题(然而我并不会)。
于是看了看保证是树或Cj=0的部分分发现只有40,感觉还是T4的40好写,于是看了T4.
花了10min读T4,发现并没有读懂题,滚回来写T3了。
这时时间只有一个多小时了,莽线段树怕是要调不完并且T4的部分分肯定没有。
于是尝试写树状数组,在考虑了好长时间后,发现不会(区间乘咋写来着?)。
最后调了分块(考试完发现炸了),调完大概5:50,看T4。
经过一定时间的深思熟虑(这时心态已经不行了),决定只写前20分。
这时时间仅剩不多,在题意尚未明确的情况下胡写了写,样例都没过。已经快18:20了,已经可以交题了。
因为害怕机器又出什么幺蛾子,我急忙清理了一下文件上交(发现过程十分顺畅),T4部分分没写。
估分100+100+40+0=240
交完题
感觉人均340,我直接当场自闭,收拾下东西,滚了滚了。
CSP复赛 Day 2
睡了一天,晚上回校测了CSP发现(炸了啊啊啊啊阿)。
T2读入数据写成了int,分数直接变玄学(下限65)。
T3分块细节写错了,直接爆零,(改过之后玄学洛谷25,牛客60,oitiku75)。
T4大概率0分。
得分大概100+80+5=185。
CSP复赛 Day 3
早上回机房发现郑外那几个dalao也炸了(幸灾乐祸hhhh)。
老师说全省就15个140+,(狂喜)。
但是想到如果考场上合理规划一下时间,再细心一点,我也将得到更高的名次,不免有些失落。
事已至此,流年匆忙,对错何妨?
NOIP加油!
NOIP
Day -1
上午竟然可以随便玩?!于是支起桌板打三国杀,第一回合自己还没摸牌被学妹四个杀秒了开始提前自闭。
经历了CSP,参赛人数锐减,大巴车也小了很多,不过打王者还能凑齐五黑(雾)。
Day 1
T1
认真读了读题,反复确认无误后发现是拓扑+分数模拟(NOIP T1考图论了),敲完之后又考虑一大会
发现似乎要用到高精,但分数因数似乎只有4个,且路径最多只经过10个点,long long应该也会有不少分吧?
哪有正经菜鸡T1写高精?于是写了个long long搁那了。
T2
夭寿啦,NOIP考字符串了!题都不是很好懂的样子,不过通过肉眼观察样例理解了题目,想到了\(O\)(\(T\)\(n^{3}\))的暴力。
通过从左到右枚举A+B段右端点,并尽可能循环拓展计算答案,对于每个x*(A+B)+C成立的情况在(A+B)内枚举A,B的断点统计答案。
这种暴力在均摊复杂度下极其优秀(因为字符串中出现循环节概率很低),大样例只跑了15s,趋近于\(O\)(\(T\)\(n^{2}\))。
接下来我写了只有单一字符的特殊点。写个前缀和因为不用判循环一直跳循环节就行了,
复杂度大概是\(O\)(\(T\)(\(n\)+\(n\)\(\ln\) \(n\)))。
开始赛后口胡大暴力:
可以发现\(O\)(\(n^{3}\))的暴力时间复杂度局限在判断合法AB串分界位置以及循环节。
显然,一个字符串出现奇数次的字符的数量\(\le\) 26 废话,那么可以
维护一个类似前缀和的东西\(f\)(\(i\),\(j\))表示从\(1-i\)奇数次的字符的数量满足\(\le\) j的位置,用\(g\)(\(i\))表示从\(i-n\)奇数次的字符的数量。
于是,对可成立的A+B字符串判断复杂度变成了预处理\(O\)(26\(n\)),查询\(O\)(1)。
其次,可以用字符串哈希或KMP判循环节,将判循环节复杂度优化为调和级数级及\(O\)(\(n\) \(\ln\) \(n\))。
加上这两个优化后复杂度大概在\(O\)( \(T\)(26\(n\)+\(n\) \(\ln\) \(n\)) )。应该能拿很多分了吧?。
T3
NOIP考SPJ了,类目。
不会跳过。
T4
考场上没时间打估计也不会。
就打了个暴力还忘判-1了。
出分
60+56+0+25=141
自闭。