CSP-S2020 总结

前言

相当自闭。这次比赛充分说明了我代码敲的有多慢。
暴力程序都没敲完。
然后敲出来的暴力除了T1都有锅,实际上T1也有锅,不过那就不是敲的问题了。
或许现在更重要的是练速度和准度,难度可以不那么高。

考场经历

排队排了蛮久的,进去之后调试完毕。考试前做好了freopen预处理,快读还有define。
一发下密码,虽然说输入错误了两次,不过在两点半的时候,文件夹还有freopen已经就绪。
开始看题。
看了十来分钟T1,感觉可以分个段,在公元0年这里和1582这里记录一个阈值,然后三段用不同的方式写。
然后看T2,一看到k的范围就想起了格雷码,然后还是二进制相关,心里大概想了想,可能这个需要容斥一下。
想着,记录一下64位里哪些位是已经被满足需要的,然后算出来仅这些位为1时的总量,再减去已经存在的动物就好。
然后就跳过去先看T3
T3也很麻烦的样子,函数调用,看个大概也没啥思路,看了一会儿到了3点了,于是回去写T1。
真正开始写T1的时候,一时间不会推,特别混乱,什么先膜个400年周期,再膜个4年周期,再处理单年,然后再分月什么的。
麻烦,突然想到可以直接枚举递推,然后写出一个结构体,记录儒略日对应的年月日,边看题目里的条件边写。
枚举实际上也挺麻烦,边界问题还调了一会儿。\(O(n)\)的复杂度,一看有80分(然而因为范围看错,预处理只到5e6,应该到1e7的,所以只有70了),还不错,而且已经过了1h,已经4点了,还是先T2往后吧。
看到T2的时候又不知道咋写了,也推不出来啥有用的性质,时间一分一分的过去,所以想着先写个暴力放着吧。想到40pts的暴力,记录一下哪些二进制位已经被满足,由k的范围遍历所有的动物,看看它的需要是否已经被满足了。
这个复杂度是\(O(2^k*20)\)的,最后有一个操作是减去已经有的动物,结果出现了问题,今天发现是中间循环判断满足性,忘了每次循环重置flag,最后竟然可以减出来负数。
简单的来说,这个暴力写挂了,只留下了10~15分。
写完这40(10~15) 已经四点五十,还有100分钟。本着求稳的心态,去打T3的暴力。
这个题初看非常麻烦,第三个函数怪怪的,看到每个函数的qi不等,所以说可以考虑把这个函数里所有的三号函数给展开,变成1号和2号函数,方便操作。
然后打一个tag作为每个点的累加加值,一个muls作为目前整个序列累积的乘积,然而这两个东西是有时间顺序的,再加上展开3号函数调了半天,最后二十分钟测试样例意识到这个问题的时候,有点慌了。
手忙脚乱的。
最后搞了个nm的暴力。只有20分。
谁知道最后只有10分。
现在不知道哪里有问题。
本来有140的,也够低了。然而最后给我搞成了95或100,省一都没了。

总结

非常失败的一次比赛,为什么呢。
首先是提前看题这点,我已经提前看题了,但是并不适应,看完一遍题的思路非常少,读题并不认真,或者说读题中缺少思考,导致读完基本白读,一开始读题的半小时实际上效率较低。
其次是看完题的决策,由于我看完题心里并没有准确的预期,在写题的时候也是重新看范围,认真考虑能拿多少分,但仍然控制不住要在拿暴力的时间想一想后边的。
结果就是思维比较混乱,正解又想不出,暴力也打的慢。T1暴力60分钟,T2暴力50分钟,T3就最离谱,由于我并不想老老实实写个暴力,因为前2道只有120,所以有点贪了。
想着多打一点,还硬要用一些平时不常用的操作,需要更多的时间来测试语法,(pair的使用之类的),导致最后100分钟结束,没有拿到想要的sub2,慌慌张张搞的nm也没对,挂掉了。
如果说上一年是什么都不会,那么今年就是写什么都慢。速度和准度低,这是我现在的一个问题。这需要我接下来的一个月每次写题都集中精神,练习更快的思路搭建,模型搭建。
一些很板子的东西,很基础的用法,我每次都会调试一大会儿,也是因为平时练习太少,导致实现的速度慢。
总之,学习的阶段过去之后,就该有强度高的练习才好。
faster,preciser。
-one month left-

posted @ 2020-11-09 14:56  explorerxx  阅读(221)  评论(0编辑  收藏  举报