被hack了,求数据,哈哈哈哈哇啊啊鹅鹅鹅
查看原帖
被hack了,求数据,哈哈哈哈哇啊啊鹅鹅鹅
1088663
zzzyyyyhhhhh楼主2024/5/13 22:27

悬一关

码风被感染了

#include<bits/stdc++.h>
using namespace std;
#define it set<node>::iterator 
const int N = 5e5+100;
int n,m;
struct node
{
	int l,r;
	mutable char var;
};
char in[N];
set<node> a;
bool operator<(node x,node y)
{
	return x.l<y.l;
}
it splite(int pos)
{
	it p=--a.upper_bound({pos,0,0});
	if((*p).l==pos)return p;
	int l=(*p).l,r=(*p).r;
	char c=(*p).var;
	a.erase(p);
	a.insert({l,pos-1,c});
	return a.insert({pos,r,c}).first;
}
it un(it p)
{
	p--;
	it q=p;
	p++;
	int l=(*q).l,r=((*p)).r;
	char c=(*p).var;
	a.erase(p);
	a.erase(q);
	return a.insert({l,r,c}).first;
}
vector<it> era;
void op(int l,int r,char c)
{
	it p,q,m;
	m=splite(r+1);
	q=splite(l);
	for(;q!=m;q++)
	{
		era.push_back(q);
	}
	while(!era.empty())
	{
		a.erase(era.back());
		era.pop_back();
	}
	q=a.insert({l,r,c}).first;
	q--;
	p=q;
	q++;
	if((*q).var==(*p).var)q=un(q);
	q++;
	m=q;
	q--;
	if((*q).var==(*m).var)un(m);
	

	
	// ((*q)).var=c;
	// if(*p.var==(*q).var)q=un(p,q);
	// if((*q).var==*m.var)un(q,m);
}
bool find(int l,int r)
{
	it p=a.upper_bound({l,0,0});
	if(p!=a.upper_bound({r,0,0}))return 0;
	if(l==1||r==n)return 1;
	p--;
	char c,d;
	if(l==(*p).l)
	{
		p--;
		c=(*p).var;
		p++;
	}
	else c=(*p).var;
	if(r==(*p).r)
	{
		p++;
		d=(*p).var;
	}
	else d=(*p).var;
	return c!=d;
}
int main()
{
	a.insert({1,n,in[1]});
	it q,p;
	cin>>n;
	cin>>in+1;
	for(int i=2;i<=n;i++)
	{
		if(in[i]!=in[i-1])
		{
			p=splite(i);
			p--;
			q=p;
			p++;
			(*q).var=in[i-1];
			(*p).var=in[i];
			// cout<<"size"<<a.size()<<'\n';
		}
	}
	cin>>m;
	char c;
	int x,y;
	char z;
	for(int i=1;i<=m;i++)
	{
		cin>>c>>x>>y;
		if(c=='B')
		{
			if(find(x,y))
			{
				cout<<"Yes\n";
			}
			else
			{
				cout<<"No\n";
			}
		}
		else
		{
			cin>>z;
			op(x,y,z);
		}	
		// for(auto i:a)cout<<i.l<<' ';

	}
}








2024/5/13 22:27
加载中...