题意:
解法:
如果两个数相同,那么就用并查集合并起来,
最后判断一共有多少个集合即可.
code:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxm=2e6+5;
int pre[maxm];
int a[maxm];
int n;
int ffind(int x){
return pre[x]==x?x:pre[x]=ffind(pre[x]);
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
pre[i]=i;
}
for(int i=1;i<=n;i++){
if(a[i]==0&&i>1){
pre[ffind(i)]=ffind(i-1);
}
if(a[i]==1&&i<n){
pre[ffind(i)]=ffind(i+1);
}
}
int ans=0;
for(int i=1;i<=n;i++){
if(pre[i]==i){
ans++;
}
}
cout<<ans<<endl;
return 0;
}