40分求助
查看原帖
40分求助
169736
Fu_Tao楼主2022/4/18 22:05
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;
typedef long long ll;
ll n,a[100001],t=1,x,last=1,ans=1e7+7,sum=0;
struct node{
	ll k;
	ll s;
}book[100001];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+1+n);
	book[1].s=1;book[1].k=1;
	for(int i=1;i<=n;i++){
		if(a[i]!=a[i+1])book[++t].s=i+1,book[t].k=1;
		else book[t].k++;
	}t--;
//	a:1 1 2 2 3
//	book:k:2 2 1
//	s:1 3 5
//	t=3
	for(int i=1;i<=n;i++){
		if(x==t)break;
		for(int j=1;j<=t;j++){
			if(x==t)break;
			if(a[book[j].s]+1==a[book[j+1].s]&&book[j].k>=1&&book[j+1].k>=1)sum++;
			else {
				ans=min(ans,sum+1);
				sum=0;
			}
			book[j].k--;
			if(book[j].k==0)x++;
		}
		
		//if(a[i]!=a[i+1]-1)ans=min(ans,i-last+1),last=i;
	}
	cout<<ans;
	return 0;
}

应该是哪个地方出现了问题,但不让下载数据,自己随便测的也对,希望大佬看看

2022/4/18 22:05
加载中...