ConstantSkill

  1. 预处理。比如 P5518 幽灵乐团 这题,预处理逆元而不是每次用的时候求速度就会提升飞快,虽然理论复杂度没什么大差别。

  2. 在多次取模的情况下可以先判断数的大小是否超过模数再决定是否取模,以减少取模次数。

    写个 Fm 函数就好了。

    如果只是加减法取余(不是乘后取余)可以把取余直接换成减法。。。

  3. 在不必要的时候把 long long 换成 int 会得到显著的常数提升。

  4. 函数传参 &

  5. 把多维数组中较小维前置。

  6. 可以换循环顺序/循环展开。

  7. 把数据结构写成 class。应该还需要使用类的内联函数才能发挥真正作用。(在洛谷上使用了 P6136 来测试,效果似乎不是那么的明显)

  8. 即便是现行 C++ 版本,内联函数 inline 仍然有着加速的作用。没有加速作用的是 register,望周知。

  9. 一个显然的加速,就是自造运算。有如下的一些方法(虽然看起来很扯拐):

    • i=-i 可以换成 i=~i+1i=(i^-1)+1

    • 如果取模 $2^k$,可以把 ans%=mo 换成 ans=ans&(mo-1)

    • 判断奇偶,使用 i&1

    • 自己写一个 abs,比如 i=x<0?-x:x。注意宏定义的使用。