蒟蒻求救珂朵莉树
  • 板块P5350 序列
  • 楼主Jim_Franklin
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/9/16 22:32
  • 上次更新2024/9/17 10:30:19
查看原帖
蒟蒻求救珂朵莉树
686342
Jim_Franklin楼主2024/9/16 22:32

本题中的 swap 操作在下面这种写法下为什么一定要先对靠前的区间先操作啊

void swap(int l1,int r1,int l2,int r2){
	if(l1>l2)swap(l1,l2),swap(r1,r2);
	vector<nd>res1,res2;
	auto itr1=split(r1+1),itl1=split(l1);
	for(auto it=itl1;it!=itr1;it++)res1.pb(*it);
	ct.erase(itl1,itr1);
	auto itr2=split(r2+1),itl2=split(l2);
	for(auto it=itl2;it!=itr2;it++)res2.pb(*it);
	ct.erase(itl2,itr2);
	for(auto i:res1)ct.insert({i.l-l1+l2,i.r-l1+l2,i.v});
	for(auto i:res2)ct.insert({i.l-l2+l1,i.r-l2+l1,i.v});
}

虽然有前人提到过这个问题,但是好像都没有给出详细的解释可能是蒟蒻太菜了看不懂吧

2024/9/16 22:32
加载中...