算法竞赛注意事项

0.注意爆int有可能是ans+=(long long)a[x]*b*2;像这种语句如果没加(long long)就会升天。

1.看清数据范围,不开long long见祖宗。

2.不要乱用指针。

3.memset不要乱用,可能会T,同时不要用它初始化double数组等等。

4.每个test case结束后记得清空数组变量。

5.看到2的次幂记得二进制位运算考虑一下。

6.字符串读入用%s,防止奇奇怪怪的回车处理。

7.边读边处理有时候需要注意不要处理到没有读入的地方。

8.-= %=用之前看看运算符的优先级。ans-=a-b之类的写法一定要注意!!

9.正难则反(eg.CF619 Div2 C)

10.DFS/BFS写判定条件时最好用!=,因为== 可能有多种情况,稍有不慎就会漏掉(POJ2251等)。

11.写了一大串子函数以后别忘在主函数里调用!!!!

12.无向图存双向边,和边数量有关的数组一定要开两倍,要不然会RE!!

13.最短路题中可以忽略,如果使用邻接矩阵记得取min.
最小生成树题中可以忽略.
求桥和割点的时候千万小心重边,在tarjan中使用恰当的方法记录刚刚走过来的边,而不是节点.

14.DP数组的边界一定要正确初始化!!

15。有的题建反图格外简单

15.搜索题别忘了vis.

16.对于成环的字符串/序列,可以考虑复制一份接在后面进行处理。

17.DP数组不要害怕开到高维度。

18.树DP不要忽视父节点与子节点之间边的关系,有的题可能会比较关键。

19.两组数如果分别和相等积相等,就构成了一个比较强的条件,可以用来粗略判断元素是否相同。

20.位运算多从逐位比较考虑 比如第1,2,3...位

21.一定不要对树状数组维护的数组直接操作!记得用modify

22.涉及到线段树维护的东西需要取模的时候,一定不能随便多写冗余的取模操作,本身常数就很大了,一多写非常容易T...

23.线段树别忘记建树!

原文地址:https://www.cnblogs.com/lipoicyclic/p/12311394.html