@[Respons_](/user/357163)
``g[cnt2].a = b[g[cnt2].i];``
感觉这句话有些问题,因为后面是直接 ``add(g[T].b), del(g[T].a);``,如果一个地方有多次修改会出问题。
by Missa @ 2022-05-09 21:28:28
当时我这样写的:
```cpp
void deal(int t){
if(l <= p[t].x && p[t].x <= r){
del(c[p[t].x]); add(p[t].y);
}
swap(c[p[t].x], p[t].y);
}
```
主函数中:
```cpp
while(t < a[i].t) deal(++t);
while(t > a[i].t) deal(t--);
```
by Missa @ 2022-05-09 21:29:10
TLE 的原因我认为是排序,我写的时候是先按 L 的块排序,再按 R 的块排序,最后按时间排序。
by 蒟蒻君HJT @ 2022-05-09 23:09:23
@[Respons_](/user/357163)
TLE是排序的问题,带修莫队我是按l所在块为第一关键字,r所在块为第二关键字,t为第三关键字排序,你这样排序明显为我可以让你香菱2个操作t变化都为O(n)
cmp代码应该这样写:
```
bool cmp(Q a, Q b){
if(a.pos != b.pos){
return a.pos < b.pos;
}
if(a.rpos != b.rpos){
return a.rpos < b.rpos;
}
return a.t<b.t;
}
```
by barbatoss @ 2022-05-10 10:35:26
@[Respons_](/user/357163)
应该没WA了,你看一下还有没有T,问题都以注释的形式发剪贴板里了,你对这看一下有没有不懂的
by barbatoss @ 2022-05-10 11:10:14
@[Missa](/user/443664) @[蒟蒻君HJT](/user/131591) @[barbatoss](/user/104155) 感谢!
by shyr @ 2022-05-10 12:41:57
放火烧山,可莉完蛋!
by barbatoss @ 2022-05-10 14:20:29