// wrong
const int N = 1.5e5;
// right
const int N = 1.5e6;
cmp 有没有套上分块的数组?// wrong
bool cmp (node a, node b) {
if (a.x == b.x && a.y == b.y)
return a.t < b.t;
if (a.x == b.x)
return a.y < b.y;
return a.x < b.x;
}
// right
bool cmp (node a, node b) {
if (bl[a.x] == bl[b.x] && bl[a.y] == bl[b.y])
return a.t < b.t;
if (bl[a.x] == bl[b.x])
return bl[a.y] < bl[b.y];
return bl[a.x] < bl[b.x];
}
i 了?// wrong
cntQ ++;
cin >> q[i].x >> q[i].y;
q[i].id = cntQ;
q[i].t = cntU;
// right
cntQ ++;
cin >> q[cntQ].x >> q[cntQ].y;
q[cntQ].id = cntQ;
q[cntQ].t = cntU;
// wrong
del (a[x]);
...
swap (u[t].y, a[x]);
// right
del (a[u[t].x]);
...
swap (u[t].y, a[u[t].x]);
分块不要用 n,要用 n32。
修改函数判断的区间范围有没有写错?
欢迎补充。