调了好几天了。
回滚莫队板子,用的是一种比较傻的方法。
定义 lnxt(i)\operatorname{lnxt}(i)lnxt(i) 为 iii 左边离 iii 最近的 jjj,满足 a(j)=a(i)a(j)=a(i)a(j)=a(i)。rnxt(i)\operatorname{rnxt}(i)rnxt(i) 同理。
每次回滚就是把原 st/ed(i)\operatorname{st/ed}(i)st/ed(i) 更新为它的 lnxt/rnxt(i)\operatorname{lnxt/rnxt}(i)lnxt/rnxt(i)。
代码:https://www.luogu.com.cn/paste/tot5fujl
求助QAQ