卡常小技巧

IO优化

这个没啥好说的,注意Obuff如果手写栈会跑得更快;以及千万不要用endl而要用\n。

函数内联

这个没啥好说的。

枚举顺序

要让可能连续的内存尽量在相近的位置被枚举,例如三维数组 $f[i][j][k]$ 建议按 $i,j,k$ 的顺序嵌套。这一点在倍增算法中特别要注意。

封装

据说这样可以让内存访问变得连续。

取模优化

对于加法中的取模,建议采用做减法。

Define

树状数组中的lowbit函数直接define会快一些。

merge代替sort

对于两个有序序列的合并,建议用STL中的merge函数。使用时需要多开一个临时数组存合并结果再复制回去。这个技巧在CDQ分治中很管用。

const 修饰

对于代码中的常量(如模数),尽量加上 const 修饰,会快不止亿点点。