这份代码能过样例,测试点除了 #6 A,其他都是 T 或者 M。
by Smiog @ 2024-02-27 21:03:38
@[Smiog](/user/399493) 你仔细思考一下你的代码 l = r = n 的时候会发生什么
by cancan123456 @ 2024-02-27 21:15:14
很明显爆空间是因为你的并查集最后扭成了依托答辩,就像这份代码
by Msents @ 2024-02-27 21:16:45
如下可过:
```cpp
for (int i = n + 1; i; --i)
fa[i] = i;
```
谢谢。
by Smiog @ 2024-02-27 21:20:58
@[Smiog](/user/399493) 给个直播号
by cancan123456 @ 2024-02-27 21:21:32
所以第一篇题解这样做
```cpp
for(reg int j=r;j>=l;){
int t=myfind(j);
if(t==j){
col[j]=i,fa[j]=myfind(j-1)/*维护连通性*/;
}j=fa[j];//直接跳到下一个可染色的点
}
```
是为了避免跳到 $n + 1$ ,所以初始化可以写成
```cpp
for(reg int i=1;i<=n;++i) fa[i]=i;
```
妙
by Smiog @ 2024-02-27 21:23:31
这么牛
by 心灵震荡 @ 2024-02-27 21:26:25
@[cancan123456](/user/448887) 没直播号,我叫我小弟证明一下。
------------
@[心灵震荡](/user/649315) 证明一下
by Smiog @ 2024-02-27 21:27:41
这哥们自己吃过键盘了,就在我旁边()
by 心灵震荡 @ 2024-02-27 21:30:01
教练不给吃你说说
![](https://pic.52112.com/180130/180130_173/kk73RuyRFt.jpg)
by Smiog @ 2024-02-27 21:33:13