[淼][惊]记搜快慢竟与简单乘法有关
查看原帖
[淼][惊]记搜快慢竟与简单乘法有关
277792
Delov楼主2022/2/8 20:17

ACcode

TLEcode

两份代码中只有第21,22行,也就是

for(int i=0;i<=ct;++i)res+=dfs(len-1,(rest*10+i)%mod,sit|(i>1 ? (1<<(i-2)) : 0),limit&&(i==ct)); //TLE

for(int i=0;i<=ct;++i)res+=dfs(len-1,(rest+i*pw[len-1]%mod)%mod,sit|(i>1 ? (1<<(i-2)) : 0),limit&&(i==ct)); //AC

这两句不同

而这两句也只有

(rest*10+i)%mod  //TLE
(rest+i*pw[len-1]%mod)%mod //AC

不同

但是AC代码比TLE的代码快了至少十倍,经过验证确实就是这一句话出了问题

而且我们经过一些优化,比如让TLE的代码只执行一次memset,AC代码仍旧比TLE的代码快两倍,而AC代码每次都要memset

求各位大佬解答

upd:有热心神犇 @LYinMX (实际上也是AC的同学) 提到ACcode较TLEcode在那行代码上少做了十倍乘法运算,但是不清楚为什么

2022/2/8 20:17
加载中...