前言
思路
这题使用并查集 处理太巧妙了
利用并查集集合的性质 , 首先解决了 是否在集合中的问题
同时还利用 p [ x ] = x + 1 p[x] = x+1 p[x]=x+1,解决了连续性的问题
MyCode
int p[N],n;
int find(int x){
if(x!=p[x])
return p[x] =find(p[x]);
return p[x];
}
void solve()
{
for(int i=1;i<=N;i++)
p[i]=i;
cin>>n;
int maxn = -0x3f;
for(int i=1;i<=n;i++){
int x;cin>>x;
x = find(x);
cout<<x<<" ";
p[x] = x+1;
}
}