社区讨论
关于模意义下加法实现不同而在洛谷评测系统中产生的效率差
P8340 [AHOI2022] 山河重整参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @lo8siobp
- 此快照首次捕获于
- 2023/10/27 23:50 2 年前
- 此快照最后确认于
- 2023/10/27 23:50 2 年前
[AHOI2022]山河重整 这道题
我最开始使用的是如下的写法:
CPPint 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上能过。
后根据其他人过了的代码更改成这样:
CPPint 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上只有20ms左右的效率偏差,但是在洛谷上第二份代码跑1.7s,第一份代码3s的点都会T。
蒟蒻不太能理解造成这种结果的原因,也不像是随机情况下的评测姬波动,所以来问一问。
请大佬教教我。
注:以上两份代码在开启与不开启O2优化的情况下都会产生稳定的差异。
回复
共 5 条回复,欢迎继续交流。
正在加载回复...