100pts
0pts
其唯一区别在于 Reverse 函数:
100pts:
void Reverse(int ql,int qr) {
int l,mid,r;
Spilt(root,qr,l,r);
Spilt(l,ql-1,l,mid);
t[mid].tag^=1;
root=Merge(l,Merge(mid,r));
}
先将原序列分成 [1,qr],[qr+1,n] 再分裂成[1,ql−1],[ql,qr],[qr+1,n]。
0pts:
void Reverse(int ql,int qr) {
int l,mid,r;
Spilt(root,ql-1,l,mid);
Spilt(mid,qr,mid,r);
t[mid].tag^=1;
root=Merge(l,Merge(mid,r));
}
先将原序列分成 [1,ql−1],[ql,n] 再分裂成[1,ql−1],[ql,qr],[qr+1,n]。
二者没有本质不同,为何结果不同呢?
小hack:
input:
5 1
3 3
output:
1 2 3 4 5