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;
	
	
	
}