关于这题测试点很水, 不知道在哪反馈???
查看原帖
关于这题测试点很水, 不知道在哪反馈???
496389
qq2931451523楼主2021/12/20 22:07

比如数据

4

1 3 5 7

答案应该是1

我的代码是100010, 但是能AC这题, 就离谱

#include <iostream>
#include <algorithm>
#include <cmath>
#include <map>
using namespace std;
const int N = 1e5 + 10;
int n, a[N], res;
map<int, int> Map;

int main()
{
	res = N;
	cin>>n;
	for (int i = 0; i < n; i++) cin>>a[i], Map[a[i]]++;
	sort(a, a + n);
	int t = 1;
	for (int i = 1; i < n; i++)
		if (a[i] != a[i - 1]) a[t++] = a[i];
	n = t;
	for (int i = 1; i < n; i++)
	{
		if (a[i] == a[i - 1] + 1 && Map[a[i - 1]])
		{
			int num = Map[a[i]], cnt, j; cnt = 1;
			for (j = i; j < n && a[j] == a[j - 1] + 1 && Map[a[j]] >= Map[a[j - 1]]; j++) cnt++;
			for (int k = i; k < j; k++) Map[a[k]] -= num;
			res = min(res, cnt);
			while (i < n && !Map[a[i]]) i++;
		}
	}
	cout<<res<<endl; 
	
	return 0;
}
2021/12/20 22:07
加载中...