并不对劲的卡常技巧

俗话说的好,心中有党,常数极小。

1、循环中加寄存器优化for(register int i;i<=n;i++){}

好像在开O2时这个没什么用。

2、函数前inline int f(int x){}

当调用函数本身的时间长度比执行函数的更长时效果会更显著。配合read()、write()使用更佳。

3、将取模运算改成if(x>=mod)x-=mod

取模运算常数极大。但要注意这只适用于当x增加的量不大于mod时。

4、将i++改为++i

5、循环展开for(int i=1;i<=n;i+=2){}

据说是内存访问更优了,总之很玄学。

6、读入/输出单个字符用putchar(),getchar()

7、少用指针

7.5、说到指针,可以用while(1){new int;}报效(复)社会

8、少用bool

9、将x*2改为x<<1,将x/2改为x>>1

位运算会快一些,但要注意加括号。

原文地址:https://www.cnblogs.com/xzyf/p/8343381.html