题目大意:给定可重复序列对数列进行+1或-1操作使得数列含有不同数字个数最大
反思:未处理第一个输入的数,导致wrong answer on test 8
思路:对数列进行排序处理(重点)类似去重离散化统计数字个数
榜一ac代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
int n;
scanf("%d",&n);
vector<int>a(n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a.begin(),a.end());
int res=0,last=0;
for(int i=0;i<n;i++){
if(a[i]-1>last)--a[i];
if(a[i]==last)++a[i];
if(a[i]>last){
++res;
last=a[i];
}
}
cout<<res<<endl;
}