我在做一道分块题时发现别人只要跑1s左右的点我要跑8s,就开了一个变量t记录了一下扫过的块总数
然后运行程序的时候它突然跑的飞起,只用了1.2s
经过多次测试后发现我的8s代码只要开个全局变量t并加一句t++就能跑的飞起,而且关闭O2优化后仍然很快
以下是循环的部分(除了定义和这里外没有再用到t)
for (int i = bel[l]; i < R; i++)
if (f[i][k])
{
k += f[i][k];
t++;
}
注释掉这个t++或是把t开成函数内的局部变量就会回到8s
在其他机子上跑也是一样的情况
是c++底层有什么神奇的优化吗
码风是Vscode的默认配置格式化出来的