省选快要到了。。这说不定就是博主参加的最后一场比赛了
这个博客貌似已经很久很久没有更新了呢,不过真的没有办法,博主因为水平原因实在拿不出什么能和大家分享的知识了(大哭
不过博主倒是有比较丰富的考挂经验,所以决定写写一些注意事项,也算给自己看,不在省选再犯了
于是就有了这篇随笔
1.文件名
大家都清楚文件名打错的后果,所以一定要注意检查多遍
亲身经历:CTS2019 d2t1 fields.cpp
2.空间限制
一般动手写代码之前,如果感觉可能被卡常可以写完再说,如果感觉可能被卡空间,一定要算好/想好如何卡空间再写
首先要用 sizeof(..)/1024/1024 计算空间,如果写了递归之类的东西,最好预留几十MB的空间
压空间的常用方法:数组重复使用,滚动数组,bitset,动态开点垃圾回收,二维数点用kdtree或cdq分治,三个 short 装两个 (10^5) 级别的 int(很少见)
亲身经历:暂时还没有过,希望以后也不要有
3.读题
怎么感觉只有我会读错题。。。
注意题目有没有定义与平时不一样的东西
比如:注意子序列的定义(子串,子序列,连续子序列,还有出题人喜欢用子序列代替子串)
注意奇怪的条件,不一定出现在题面中,也可能是数据范围
亲身经历:csp2019 d1t2 本质不同 的重新定义
4.多测
做了很多多测的题,挂了不知道多少次,总结出来一条经验:不管什么数组都要清空,即使你不清楚上一次使用对下一次使用是否会有影响
但是要注意如果题目只保证了 (sum nle dots) 这样的时候,要部分清空,不可以 memset (cf edu 特色
亲身经历:正式比赛还没有过,模拟赛数不胜数
6.判包
建议写成多个 namespace 避免互相影响
现在的出题人多数会给你测试点编号,这样判包会方便很多,但是如果没给,一定要注意先运行哪个,如果不行再运行哪个,如果写的某个包是乱搞,先看看能不能跑有正确性保证的部分,如果都不行再运行乱搞
比如一个关于无向图的最优化题,写了一个指数级暴力,部分分是树,写了一个不知道对不对的贪心,那么要先判 指数级暴力 的包,即使它是树
越小的包/特判越要注意(特判最好手玩清楚,如果是小范围判断大范围,要和暴力跑一下对上)如果有包含关系会导致一挂全挂
还有就是判断当前测试点属于哪个包,emmm这个就具体题目具体分析吧,应该不会存在什么不可判的
亲身经历:wc2019t1 写挂了8pts的特判