社区讨论
这东西是UB吗
学术版参与者 5已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @lo9avcie
- 此快照首次捕获于
- 2023/10/28 08:24 2 年前
- 此快照最后确认于
- 2023/10/28 08:24 2 年前
我在某题写了这样一段代码:
CPPint merge(int st,int s){
if(!s) return 0;
for(int x=st;;x=so[x]){
int ns=sz[st]-sz[so[x]];
if(ns*2>=s){
fa[lc[x]=merge(st,sz[st]-sz[x])]=fa[rc[x]=merge(so[x],s-ns)]=x;
upd(x);return x;
}
}
}
本机是正常的(在同学的Ubuntu上也正常)
交到洛谷上某些时候就会出玄学锅,比如有东西fa[x]=x
改成这样:
CPPint merge(int st,int s){
if(!s) return 0;
for(int x=st;;x=so[x]){
int ns=sz[st]-sz[so[x]];
if(ns*2>=s){
lc[x]=merge(st,sz[st]-sz[x]);rc[x]=merge(so[x],s-ns);
fa[lc[x]]=fa[rc[x]]=x;upd(x);
return x;
}
}
}
在洛谷上就正常了……
调了一上午……
回复
共 6 条回复,欢迎继续交流。
正在加载回复...