当我终于找到这个bug的时候,我冥冥之中感觉自己见鬼了。。。
全局变量的位置竟然有这么大的影响?!!!放在(多个函数)后面竟然在牛客oj上无法运行???!!!,然后将全局变量放在前面就可以了?而且那几个全局变量只在main里面用到,上面的几个函数根本没用到,感觉这似乎涉及了更加本质的东西。。。
不过,似乎还有别的问题。。。。。。。。。。。
请比较以下代码(TMD 有什么区别 !!!):
correct
uint f[3*maxm],lt[maxm],rt[maxm],v[maxm]
......
for (int i=1;i<=3*M;++i) f[i]=fun();
for (int i=1;i<=M;++i){
lt[i]=min(f[3*i-2]%N,f[3*i-1]%N)+1;
rt[i]=max(f[3*i-2]%N,f[3*i-1]%N)+1;
v[i]=f[3*i]%mod;
update(lt[i],rt[i],1,N,v[i],1);
}
AND:
wrong
uint fmr,lat,lt,rt,v;
......
for (int i=1;i<=M;++i){
fmr=fun()%N+1;
lat=fun()%N+1;
lt=min(fmr,lat);
rt=max(fmr,lat);
v=fun()%mod;
update(lt,rt,1,N,v,1);
}
不过这两个问题有着相同的特征: 都是围绕全局变量产生的问题
暂时无法找到问题所在。。。