如题所述,专门记录自己在各类考试、做题中出现的花式错误。
2020.08.24
-
多组数据,小范围搜索,大范围骗分的时候,没有注意小范围搜索的用时,导致 TLE 。(
2020.08.24 bracket
)
处理:不要贪心,同时严格把控小范围的时间空间开销。 -
从母串 (S) 里面提取子串 (T) ,然后本应该在 (T) 上进行的操作,全部搞在了 (S) 上面,导致 WA 。(
2020.08.24 play
) -
中途修改写法,把外部的写成的某一个步骤封装或者改写成函数。其中函数的某个参数是全局变量,但是内部相关参数没有改名字,导致 WA 。(
2020.08.24 river
)
处理:善用替换功能。
2020.08.25
-
[Ynoi2019模拟赛] Yuno loves sqrt technology II
写莫队发现自己没有排序,T 飞了。
大致可以描述为:void Init() { //对 Q 数组进行排序 } int main() { Init(); ...... //读入 Q return 0; }
处理:一定要将数据读入完之后再预处理 。
-
题目见上。
写分块的时候对边角块处理不当......void UpdateBlock( int id, int l, int r, ... ); //块内处理 void UpdateAll( int L, int R ); //全局处理 { if( 左边有边角块 ) UpdateBlock( 块编号, L, R, ... ); ...... }
事实上应该将左右边界限制在块的范围内。
2020.08.26
-
【UR #2】跳蚤公路
循环变量用上了不常用的名字,结果之后就写错名字:for( 对 i 循环 ) for( int u = 1 ; i <= n ; u ++ ) //......
处理:尽量规避奇怪的循环变量名称,同时写的时候也要带脑子。
-
[CF446C]DZY Loves Fibonacci Numbers
分块写法,清理标记的时候,没有判断有没有标记:void Normalize( int id ) { //这里缺少了是否存在标记的判断 for( int k = lef[id] ; k <= rig[id] ; k ++ ) //...... }
最开始以为分块的标记和线段树类似,现在才意识到,分块下放标记的时间是 (O(T)) 的,所以不判掉就会特别慢......
2020.08.27
-
模拟赛。
写 DP 数组,虽然时间复杂度不对头,但是我很自信,于是就把空间开到了最大,希望能卡过。
然后它就 MLE 了,呜呜呜~
省选的时候就吃过了数据结构 MLE 的亏,今天倒是注意了这一点。
没想到 DP 数组也能 MLE ......
处理:比赛最后检查的时候一定要算一遍空间,不要太贪心。 -
模拟赛。
最后 45 分钟 rush 一个正解。由于人很慌,而且是数据结构题目,所以小数据就拼了个暴力上去,想着是有保底的分数。
测出来我就发现,我正解写对了,但是暴力居然写错了?!
于是就挂了...... -
还是模拟赛。
以为 T3 不太难,于是硬刚它。没有想到它是很恶心的结论题目,于是我就花费很多时间,换来了 10pts 的好分数。
处理:开场时每道题先粗略地思考一下,评估难度;规划好时间,避免吊死在一棵树上。
2020.08.31
-
[HDU6826] An Easy Matrix Problem
树状数组写模板写习惯了,结果现在带上取模却忘了改板子,然后就 WA WA WA 个不停。
处理:尽量少复制板子,尽量重新手写。特别是遇到取模等特殊情况的时候,一定要多多检查自己认为正确的板子!
2020.09.01
-
错误一:多组不清空,爆零两行泪。
错误二:写圆方树却没有开两倍空间,清空的范围也不够,于是就疯狂 RE 。
处理:想好了之后再开始写代码;中途有修改的话记得看一看代码中的其他地方有无影响;检查代码。
2020.09.11
-
错误:多组不清空,爆零两行泪。
梅开二度
2020.09.19
-
模拟赛。某题有多解,要求输出 " 字典序最小的一组 " 。
由于方案构造起来并不复杂,所以......直接没有看到这个要求(甚至过了大样例),暴毙。
-
模拟赛。预处理应该按照值域为范围来清,结果只清到了点数范围,继续暴毙。
2020.09.27
-
同一变量多次重复使用,中间没有清空,直接暴毙:
int lst = N + 1; for( int i = N ; ~ i ; i -- ) { nxt[i][1] = lst; if( S[i] == '1' ) lst = i; } //这里本应该清空 lst 的 for( int i = N ; ~ i ; i -- ) { if( S[i] == '1' || S[i + 1] == '0' ) nxt[i][0] = lst; if( S[i] == '0' ) lst = i; }
处理办法:
带脑子写题就好了,编写的时候要对当前变量的作用有清晰的认识,才能减少出错概率。
2020.10.06
- [HDU6334]Problem C. Problems on a Tree
画蛇添足,本身不需要用map
的地方偏偏使用了,导致程序及其慢,map
占用了将近 (frac 1 3) 的时间。
处理方法:慎用 STL ,尤其是比较卡或者没开 O2 的时候。
2020.10.12
-
最大生成树,运算符直接重载为了小于。
处理方法:注意这种小细节,不要惯性思维。
2020.10.15
-
我不记得了突然想起来,于是记一笔。这个错误已经犯过两次了。
写程序的时候,中途使用了
cmath
中的函数,但并没有加上头文件。问题是,Dev-C++
的垃圾库直接把cmath
丢到了algorithm
里面,所以 ......CE!处理方法:正式考试的时候,最好用一下其它
正规的编译器。或者在检查的时候,对于每一个函数检查它的头文件是否已引用。
2020.10.20
-
题目数据范围太鬼畜,没判断
s==0
直接暴毙。处理方法:仔细阅读范围,最好能在程序/草稿纸上把数据的细节写下来。