[AHOI2022]山河重整 这道题
我最开始使用的是如下的写法:
int add(int x,int y,int p){return x+y<p?x+y:x+y-p;}
void Add(int &x,int y,int p){x=add(x,y,p);}
交在洛谷上会T掉,loj上能过。
提交记录:
洛谷
loj
后根据其他人过了的代码更改成这样:
int add(int x,int y,int p){return (x+=y)<p?x:x-p;}
void Add(int &x,int y,int p){(x+=y)>=p&&(x-=p);}
就能在洛谷与loj上都通过了。
提交记录:
洛谷
loj
但是问题在于以上两个代码在LOJ上只有20ms左右的效率偏差,但是在洛谷上第二份代码跑1.7s,第一份代码3s的点都会T。
蒟蒻不太能理解造成这种结果的原因,也不像是随机情况下的评测姬波动,所以来问一问。
请大佬教教我。
注:以上两份代码在开启与不开启O2优化的情况下都会产生稳定的差异。