Boliuraque OI 总结
低级错误种类:
1、将程序放置于桌面,由于断电、死机、不小心关机等情况导致重启,致使程序全部丢失。——低级星级:★★★★★★★
2、找不到程序。——低级星级:★★★★★
可能引起该种错误原因:1)因为手贱,眼睛花等原因导致程序名打错。
2)没有按要求将程序放置到指定位置,导致没有收取。
3、无输出。——低级星级:★★★★★
可能引起该种错误原因:1)因为手贱,眼睛花等原因导致输入输出文件名打错。
2)写代码时使用屏幕输入输出,考试快结束时,慌乱的添加freopen导致打错,甚至忘记加。
3)偷懒复制前一题的freopen,但是忘记修改文件名。
4)误把输出的"w","stdout"打成"r","stdin"等(复制但没有修改)。
4、没有按照制定格式输出。——低级星级:★★★★★
可能引起该种错误原因:1)不看输出说明和样例,想当然的输出答案。
2)没有严格输出要求的固定字符,如最容易忽略的标点符号:"." "?" "!"等。
3)对于多组测试数据要求每个答案前添加序号的,搞错。
5、交错程序。——低级星级:★★★★★
可能引起该种错误原因:1)做题时写了多个程序,交的时候搞混了。
6、把对的程序改错。——低级星级:★★★★★
可能引起该种错误原因:1)对于能得分的程序,想再优化一下,却不备份程序直接修改,到最后改的全错了,因没时间了改不回 去导致0分
检查要点:
1.重新读题,检查:
①是否将题意理解错误。
②将重要内容打上下划线。
③对照输入输出。
④有无遗漏的情况。
2.手动模拟程序,检查:
①是否有运行顺序方面的错误。
②若涉及状态更新,注意该状态更新的条件及何时更新完毕。
③初始化(重中之重!!!!!)
④有无语法错误。
⑤空间是否开足,是否超空间。
⑥输入输出是否合乎标准。
3.检查文件名。
4.对于有关优化,注意:
①用朴素算法对拍。
②有哪些地方重复计算。
③优化后保证答案正确的条件。
1.读题不仔细造成理解失误
仔细读题,深入理解题意
2.变量名打错
使用意义明显、区别大的的变量名
3.常量错误
只有多检查,反复确认
错误集锦
笔误
1. 在以J为循环变量的循环中总是习惯打成i。
2. 循环结束后总是容易将a[n]打成a[i]。
编写错误
1. DP时的边界条件总是不能引起足够重视,也许与考试时心态有关。
2. 数组总容易忘记开0,却几乎每次都要用0。
3. 变量总忘记赋初值。
思想错误
1. DP时容易少开维数而使其有后效性。
2. 对用高级知识吓人的题目容易望文生义,譬如那道“匹配”。
3. 灵感闪现想出算法时容易激动而忽略了检查正确性。特别是贪心算法。
4. 认为骗分就是骗分,不重视骗分题目的优化。其实有时候“骗分”算法+剪枝就是标准答案。
5. 不能正确估计时空复杂度。时间上因为没有优化算法导致高估。空间上没有考虑堆栈导致低估。其结果都是毁灭性的。
坏习惯
1. 循环变量一辈子都是I,j,k。数组一辈子都是A,B,C。结果很容易搞混。
2. 不喜欢用子程序,结果程序拉拉杂杂一大堆,错了找半天。
3. 过于喜欢用子程序,结果F7调试又老出错。
4. 喜欢用屏幕输出调试。后果。。。显而易见。
1.不明确要求输出什么。
一些总结与感触 :
●记忆化搜索可以很好地理清顺序,并方便边界的处理。
●高精度中如果在运算中涉及到同一变量的多次赋值,最好在=的重载中加上(memset(s,0,sizeof(s));len=0;)
不仅仅是高精度,任何多次赋值的结构体都最好提前初始化,避免出现问题。
●memset()不能赋超过int的数(包括double,long long)
●log(double a)要求为double
●数学函数一般参数为double
●结构体的直接赋值比for循环要快的多
●正式考试一定要写对拍
●不要自己觉得优化不大就不去写,只要不会拉低程序效率就加上去,说不定有你没想到的地方。
●建好cpp再写,多保存。
●写代码时一定要一步一步写对,写一点调一点,不要留太多空。
●函数分块,对拍。没思路且暴力好写的优先写暴力。
●char类型中'\0'==0,如果字符串中有'\0'一定不要用strlen()函数!!!