关于莫队循环
查看原帖
关于莫队循环
369411
DANNNqwq楼主2023/11/25 23:29

我参考第一篇题解的思路写的
为什么第一个循环是错误的,第二个是对的

while(l>q[i].l) updl(a[--l],1);
while(r<q[i].r) updr(a[++r],1);
while(l<q[i].l) updl(a[l++],-1);
while(r>q[i].r) updr(a[r--],-1);
while(l>q[i].l) updl(a[l--],-1);
while(r<q[i].r) updr(a[++r],1);
while(l<q[i].l) updl(a[++l],1);
while(r>q[i].r) updr(a[r--],-1);

而且第一篇题解的循环位置oiwiki说是错误的
这 4 种正确写法的共同特点是,前两步先扩大区间(l-- 或 r++),后两步再缩小区间(l++ 或 r--)。

2023/11/25 23:29
加载中...