卡常小技巧
IO优化
这个没啥好说的,注意Obuff如果手写栈会跑得更快;以及千万不要用endl而要用\n。
函数内联
这个没啥好说的。
枚举顺序
要让可能连续的内存尽量在相近的位置被枚举,例如三维数组 $f[i][j][k]$ 建议按 $i,j,k$ 的顺序嵌套。这一点在倍增算法中特别要注意。
封装
据说这样可以让内存访问变得连续。
取模优化
对于加法中的取模,建议采用做减法。
Define
树状数组中的lowbit函数直接define会快一些。
merge代替sort
对于两个有序序列的合并,建议用STL中的merge函数。使用时需要多开一个临时数组存合并结果再复制回去。这个技巧在CDQ分治中很管用。
const 修饰
对于代码中的常量(如模数),尽量加上 const 修饰,会快不止亿点点。