论ODT
  • 板块题目总版
  • 楼主Dino_chx
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/21 16:44
  • 上次更新2024/1/21 19:54:38
查看原帖
论ODT
715233
Dino_chx楼主2024/1/21 16:44

本人的ODT板子如下,但是这个板子经常卡住,求调。

#include<bits/stdc++.h>
#define iter set<maintain>::iterator
#define ll long long
using namespace std;
struct ODT
{
	struct maintain
	{
		int l,r;
		mutable int val;
		bool operator<(const maintain &e2)const
		{
			return l<e2.l;
		}
	};
	set<maintain> s;
	iter split(int pos)
	{
		iter it=s.lower_bound({pos,0,0});
		if(it!=s.end()&&it->l==pos)
			return it;
		it--;
		int L=it->l,R=it->r,V=it->val;
		s.erase(it);
		s.insert({L,pos-1,V});
		return s.insert({pos,R,V}).first;
	}
	void assign(int l,int r,int val) 
	{
		iter R=split(r+1),L=split(l);
		s.erase(L,R);
		s.insert({l,r,val});
		return;
	}
}odt;
int main()
{

    return 0;
}

2024/1/21 16:44
加载中...