Loading

算法竞赛注意事项

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.线段树别忘记建树!

24.区间DP,为保证子问题被计算过,应该以区间长度为阶段!

25.不要在全局初始化a[10000] = {0x3f3f3f3f} 可能报错 Compiler exceeded OUTPUT limit

26.dfs相比bfs有爆栈的风险

27.有可能是一个本应该有返回值的函数没有写return语句造成的,本地能过OJ上就会报段错误。

28.有时候可以提前用快速幂预处理出二的次幂防t

29.string的size方法不是O(1),最好int sz = s.size();

 
posted @ 2020-02-15 13:17  脂环  阅读(329)  评论(0编辑  收藏  举报