E - Insert or Erase
题解
直接插在它后面,这种数据结构是链表
赛时明明想到了链表,但是写的一团糟。。
对于链表,最简单的就是用map了
code
#include<bits/stdc++.h>
using namespace std;
int a[200005];
map<int,int> head,to;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
int start=a[1];
for(int i=2;i<=n;i++)
{
head[a[i]]=a[i-1];
to[a[i-1]]=a[i];
}
int q;
cin>>q;
while(q--)
{
int op;
cin>>op;
if(op==1)
{
int x,y;
cin>>x>>y;
to[y]=to[x];
head[y]=x;
head[to[x]]=y;
to[x]=y;
}
else
{
int x;
cin>>x;
head[to[x]]=head[x];
to[head[x]]=to[x];
if(start==x)start=to[x];
}
}
int it=start;
while(it)
{
cout<<it<<" ";
it=to[it];
}
return 0;
}

浙公网安备 33010602011771号