你这个我觉得应该是你合并的时候要新建一个根,而不是直接把y合并到x上去
by Rikka__ @ 2022-04-01 20:20:59
@[蒟蒻君HJT](/user/131591) 一直WA在WA在Test 2 line19,应该是4 1而输出了3 1.和@[Caicz](/user/224229) 是一样的错误,但我写的传参版本也是新开了结点记录答案的。
by 蒟蒻君HJT @ 2022-04-01 20:21:07
毕竟你还是之后还是需要x或者y的信息的
by Rikka__ @ 2022-04-01 20:21:49
但是你传参的话,是把x的信息改变了吧
by Rikka__ @ 2022-04-01 20:22:37
@[Rikka__](/user/106103) 传参版本也是新建了根的吧?你可以看一下前几行
by 蒟蒻君HJT @ 2022-04-01 20:22:53
可以看一下你dfs/基数排序 里面的合并代码么![](//图.tk/0)
by Rikka__ @ 2022-04-01 20:24:32
@[Rikka__](/user/106103) 您这样说我好像突然明白了,问题出在这两行:
```cpp
merge(tree[x].ls,tree[y].ls,l,mid);
merge(tree[x].rs,tree[y].rs,mid+1,r);
```
这是把原来信息改掉了。。。
thx!
by 蒟蒻君HJT @ 2022-04-01 20:24:57
![](//图.tk/0)
by Rikka__ @ 2022-04-01 20:25:11
或者应该说这里:
```cpp
merge(tree[x].ls,tree[y].ls,l,mid);
merge(tree[x].rs,tree[y].rs,mid+1,r);
```
并不是修改了什么不应该修改的东西,而是没有正确维护新的节点的ls和rs
by 蒟蒻君HJT @ 2022-04-01 20:34:43
@[蒟蒻君HJT](/user/131591) @[Rikka__](/user/106103) 能问一下为什么不能直接覆盖到x上吗?
by Azote @ 2023-12-22 11:38:43