显然对于每个 答案是当前所有
构成的极长连续段个数,所以只要加入
时,判断其对整体的极长连续段个数产生的影响,简单分类讨论维护即可。代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,a[100005],mp[100005],res=0;
int main(){
cin>>n;
for(ll i=1;i<=n;i++) cin>>a[i];
for(ll i=1;i<=n;i++){
if(!mp[a[i]-1]&&!mp[a[i]+1]) res++;
else if(mp[a[i]-1]&&mp[a[i]+1]) res--;
mp[a[i]]=1;
cout<<res<<" ";
}
}

京公网安备 11010502036488号