2012-team3

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

FinalStrike错误清单v1.1

1.提交之前一定要测试完样例,包括改完代码重新提交的时候

2.表达式求值的中间结果可能有负数,最好用递归来做

3.普通坐标轴上的题目跟格子题的x、y不要混起来,特别是大肥羊做这种题的时候更要注意

4.格子题转方向的时候,无论加减都可以先加一个mod再取模

5.清空数组\vector的时候,对于一些变量比较多的题目,一定要检查清空范围对不对,比如有的范围是n,有的范围是500,如果时限要求不高,最好直接把整个数组清空

6.if语句\循环语句括号后面常常手抖打个分号,遇到离奇错误或者死活wa要检查这一点

7.10万以上级别的输入输出数据,尽量不要用cin、cout来读写字符串,否则可能tle

8.几何模板里面,有两个乘法,一个是返回的是point,一个返回的是double,敲模板的时候一定要看清楚点,不要瞎了钛合金狗眼@.@,还有就是不要手贱敲成bool operator了

9.编译出现离奇错误、某个double值输出为nan的时候,首先考虑这个变量未赋值,以及该return的函数没有写return语句返回结果

10.取mod的时候,比如sum=(sum+x)%mod,可能会手抖写成sum+=(sum+x)%mod,要注意

11.某些拆点网络流,比如有n个点的时候,数组应该开成2*n(或者更大),一定注意

12.闽爷写复杂数据结构的题目,清空数组的时候不要有遗漏,最好完整check一下开出来的所有数组

13.最短路dp一般是大肥羊写,dp[ss.x][state]=0这一句初始化不要遗漏,还有就是初始化的时候要注意题目条件,有时候0也是合法的,要初始化为-1才行

14.输出的时候检查输出格式,一般是“Case 1: XXX“,striver不要忘了输出Case,大肥羊不要把case打成caes,注意数字和冒号之间有无空格

15.需要longlong的题目,除非特殊情况,应该把所有int都改成longlong,避免犯2,eps一般情况下取1e-10

16.闽爷如果调试出现奇怪错误以及第一次提交代码之前,要额外检查一下有没有scanf数据到case数,有没有漏掉scanf数据给n之类的变量

17.大肥羊在写某些需要离散化题目时,如果离散化的点个数发生改变,不要忘了修改对应的数组大小

18.对于字符串计数等题目,要特别关注空串是否考虑的情况,如果模棱两可又wa的话,不要争议,两种情况都交一下

19.大肥羊在写多条件判断需要直接return、continue的时候,对于某些全局变量,比如cases,要每个条件return、continue之前都记住修改这些变量

20.涉及复杂数据结构的题,闽爷一定要想清楚再写,除非有模版,前期绝对不要开复杂数据结构

21.涉及100000以上的变量,如果中间步骤有乘法,一定特别检查是否爆int,有longlong的题目也要检查是否爆longlong

22.多返回条件的函数,最后不要忘了return 0之类的

23.大肥羊写博弈暴搜的时候,不要贪图代码长度,老老实实写两个dfs函数,一个自己,一个对手

24.AC自动机,对于非法的字符串,要注意子串重叠非法的情况,比如00和1001,那100其实也非法了,在build的时候要用fail指针把这些子串处理出来

25.有些最短路的题目,一开始可能用的bfs,后来改成转移状态的时候不一定step都加1,那么这个时候就不能到终点直接break了,要记得做相应修改

26.striver写几何题目,如果wa了要记得检查变量是不是x写成y之类的,比赛前期绝不先跳几何题,除非是有人AC了这题

27.写while(scanf("%d",&n)!=EOF)一定不要忘了EOF,不然TLE都不知道怎么回事,位运算一律加括号,不要去管优先级

28.大肥羊AC自动机注意事项:str[i]-'a'还是-'A'还是-'0'要根据相应题目条件修改,改的地方有两处,insert函数和gao函数,不要遗漏;利用fail指针判子串要根据题目条件来进行调整,如果模式串不多,可以直接用位运算压缩,如果模式串多但长度很短,可以直接暴力枚举fail到根节点;自己写gao函数的时候,不要把for(i=0;str[i];i++)写成i<str[i];

29.///后缀数组:  计算height数组   
height数组的值应该是从height[1]开始的,而且height[1]应该是等于0的。 原因是,+因为我们在字符串后面添加了一个0号字符,所以它必然是最小的一个后缀。而字符串中的其他字符都应该是大于0的(使用倍增算法前需要确保这点),所以排名第二的字符串和0号字符的公共前缀(即height[1])应当为0.在调用calheight函数时,要注意height数组的范围应该是[1..n]。所以调用时应该是calheight(r,sa,n) 而不是calheight(r,sa,n+1)。 

FinalStrike错误清单v1.1

1.提交之前一定要测试完样例,包括改完代码重新提交的时候

2.表达式求值的中间结果可能有负数,最好用递归来做

3.普通坐标轴上的题目跟格子题的x、y不要混起来,特别是大肥羊做这种题的时候更要注意

4.格子题转方向的时候,无论加减都可以先加一个mod再取模

5.清空数组\vector的时候,对于一些变量比较多的题目,一定要检查清空范围对不对,比如有的范围是n,有的范围是500,如果时限要求不高,最好直接把整个数组清空

6.if语句\循环语句括号后面常常手抖打个分号,遇到离奇错误或者死活wa要检查这一点

7.10万以上级别的输入输出数据,尽量不要用cin、cout来读写字符串,否则可能tle

8.几何模板里面,有两个乘法,一个是返回的是point,一个返回的是double,敲模板的时候一定要看清楚点,不要瞎了钛合金狗眼@.@,还有就是不要手贱敲成bool operator了

9.编译出现离奇错误、某个double值输出为nan的时候,首先考虑这个变量未赋值,以及该return的函数没有写return语句返回结果

10.取mod的时候,比如sum=(sum+x)%mod,可能会手抖写成sum+=(sum+x)%mod,要注意

11.某些拆点网络流,比如有n个点的时候,数组应该开成2*n(或者更大),一定注意

12.闽爷写复杂数据结构的题目,清空数组的时候不要有遗漏,最好完整check一下开出来的所有数组

13.最短路dp一般是大肥羊写,dp[ss.x][state]=0这一句初始化不要遗漏,还有就是初始化的时候要注意题目条件,有时候0也是合法的,要初始化为-1才行

14.输出的时候检查输出格式,一般是“Case 1: XXX“,striver不要忘了输出Case,大肥羊不要把case打成caes,注意数字和冒号之间有无空格

15.需要longlong的题目,除非特殊情况,应该把所有int都改成longlong,避免犯2,eps一般情况下取1e-10

16.闽爷如果调试出现奇怪错误以及第一次提交代码之前,要额外检查一下有没有scanf数据到case数,有没有漏掉scanf数据给n之类的变量

17.大肥羊在写某些需要离散化题目时,如果离散化的点个数发生改变,不要忘了修改对应的数组大小

18.对于字符串计数等题目,要特别关注空串是否考虑的情况,如果模棱两可又wa的话,不要争议,两种情况都交一下

19.大肥羊在写多条件判断需要直接return、continue的时候,对于某些全局变量,比如cases,要每个条件return、continue之前都记住修改这些变量

20.涉及复杂数据结构的题,闽爷一定要想清楚再写,除非有模版,前期绝对不要开复杂数据结构

21.涉及100000以上的变量,如果中间步骤有乘法,一定特别检查是否爆int,有longlong的题目也要检查是否爆longlong

22.多返回条件的函数,最后不要忘了return 0之类的

23.大肥羊写博弈暴搜的时候,不要贪图代码长度,老老实实写两个dfs函数,一个自己,一个对手

24.AC自动机,对于非法的字符串,要注意子串重叠非法的情况,比如00和1001,那100其实也非法了,在build的时候要用fail指针把这些子串处理出来

25.有些最短路的题目,一开始可能用的bfs,后来改成转移状态的时候不一定step都加1,那么这个时候就不能到终点直接break了,要记得做相应修改

26.striver写几何题目,如果wa了要记得检查变量是不是x写成y之类的,比赛前期绝不先跳几何题,除非是有人AC了这题

27.写while(scanf("%d",&n)!=EOF)一定不要忘了EOF,不然TLE都不知道怎么回事,位运算一律加括号,不要去管优先级

28.大肥羊AC自动机注意事项:str[i]-'a'还是-'A'还是-'0'要根据相应题目条件修改,改的地方有两处,insert函数和gao函数,不要遗漏;利用fail指针判子串要根据题目条件来进行调整,如果模式串不多,可以直接用位运算压缩,如果模式串多但长度很短,可以直接暴力枚举fail到根节点;自己写gao函数的时候,不要把for(i=0;str[i];i++)写成i

29.///后缀数组: 计算height数组

height数组的值应该是从height[1]开始的,而且height[1]应该是等于0的。 原因是,+因为我们在字符串后面添加了一个0号字符,所以它必然是最小的一个后缀。而字符串中的其他字符都应该是大于0的(使用倍增算法前需要确保这点),所以排名第二的字符串和0号字符的公共前缀(即height[1])应当为0.在调用calheight函数时,要注意height数组的范围应该是[1..n]。所以调用时应该是calheight(r,sa,n) 而不是calheight(r,sa,n+1)。