刷题错误(个人)整理

来源:互联网 发布:linux red5安装与配置 编辑:程序博客网 时间:2024/06/08 11:40

这里写图片描述

1、变量名打错;

例:数据备份(竟然过了样例……);
避免:定义规范的变量名,实在不行用拼音.

2、bfs时没有标记已经到达的状态;
四子连棋,愤怒的小鸟;
避免:在纸上写出所有可能的状态,看是否将所有当前状态标记;

3、输入打错;
(1) 定义long long,输入%d;
(2)直接输入long double,(需要强转);
避免:仔细看~~~~

4、读错题目;
将水题看成神题,将神题看成水题;
避免:多读两遍题目,手推样例,在确定完全理解好题意后再思考 ;

5、inf设置的不够大;
例:蚯蚓;
避免:设置为int的极限值;

6、某些线段树题,有将整个区间赋值为0的操作;
而lazy标记为0,无法下传lazy标记;
例:软件包管理器;
避免:将lazy记为-1;

7、分不清n和m;
特别是用kruskal时,给边m排序,而不是给点n排序;
注意读题,可能存在n表示边的情况,依具体题目而定,例:poj某最短路板子题;

8、注意各数组应该开的大小;
不要一律用MAXN替换;
对于图论题,n<=100,但n个点却能组成10000条边! 例:舞会邀请,车站分级;
对于无向图,邻接表数组至少需要开两倍大
避免:每一个单独开;

9、取模不彻底;
例:浮游大陆的68号岛;
取模不彻底,中途爆掉就GG了;
但模数也不易太多,(mod很慢);
同时取模时还要防止负数的出现;

10、数组越界;
出现-1、-2下标,windows下不报错;
或者下标超过数组大小(例如在函数内定义了一个变量,没有赋值);

11、没有对定义的变量赋初值;
对于计数器等变量需要赋为0的初值;
乘法赋值为1,加法赋值为0;

12、dfs回溯时将本来没有的状态加上了;
例:补丁VS错误;
避免:定义中间变量解决;

13、dfs时没有搜全所有状态,或者剪枝时将可行解减掉了;
例:Mayan游戏;
避免:保持思路清晰,思考是否剪枝可行;

14、没有验证思路的正确性就开始打代码
例:又是毕业季II;
避免:多写写,最好证明一下;

15、用”高端”算法
例:某考试题;
避免:结合特性找替代品;

16、二分边界不对
最小化最大值:左开右闭;
最大化最小值:左闭右开 ;
避免:emmmm;

17、if写成else if;
注意并列关系和递进关系;
惨痛的教训……
避免:理清思路再打代码;

18、开cmath库时定义了y1,y0,yn,j0,j1,jn
避免:换个变量名;

19、用memset没有开cstring;
避免:写全头文件,但不能用全库;

20、strlen写在for内,会TLE;
惨痛教训……
避免:写在for外(和没说有什么区别……)

原创粉丝点击