玄关,fhq_treap区间分裂顺序不同为什么导致答案不同?
查看原帖
玄关,fhq_treap区间分裂顺序不同为什么导致答案不同?
935908
zengziqvan楼主2025/1/28 03:31

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,qr],[qr+1,n] 再分裂成[1,ql1],[ql,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,ql1],[ql,n][1,ql-1],[ql,n] 再分裂成[1,ql1],[ql,qr],[qr+1,n][1,ql-1],[ql,qr],[qr+1,n]

二者没有本质不同,为何结果不同呢?

小hack:

input:
5 1
3 3

output:
1 2 3 4 5
2025/1/28 03:31
加载中...