map哈希表
错误原因:没有发现数组重复,例如:1222333444555,未统计重复的序列
做法
map<int ,int>freq 统计每个数字的出现频率
对于每个数字x,如果有x-1存在,那么部分x可以接在x-1后面(免费删除)
具体来说:对于数字x,最多有min(freq[x-1], freq[x])个x可以免费删除
总代价 = n - 所有min(freq[x-1], freq[x])的和
using namespace std;
#define int long long
const int N=2e5+10;
int a[N];
map<int,int>fre;
signed main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
fre[a[i]]++;
}
int cnt=0;
sort(a,a+n);
int ans=-1;
for(int i=1;i<n;i++)
{
if(fre[a[i]-1]&&a[i]!=ans)
{
cnt+=min(fre[a[i]-1],fre[a[i]]);
}
ans=a[i];
}
cout<<n-cnt<<endl;
return 0;
}