题目传送门https://vjudge.net/problem/CSES-2216
解题思路
一开始没看清题目,还以为是狄尔沃斯定理……(我是人机)
首先,开一个 map,记录每个数是否存在。
对于每个 ,若
存在,那么可以接续;
否则,就需要多取一次。
代码
#include<bits/stdc++.h>
using namespace std;
int n,a[200001];
map<int,int> flag;
int ans;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
if(flag[a[i]-1]==0)
ans++;
flag[a[i]]=i;
}
cout<<ans;
return 0;
}