P4447 80分求助
  • 板块题目总版
  • 楼主W_C_B_H
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/9/12 11:53
  • 上次更新2023/11/4 06:59:56
查看原帖
P4447 80分求助
527300
W_C_B_H楼主2021/9/12 11:53

P4447我的代码是这样的

#include<bits/stdc++.h>
using namespace std;
int n,a[100005],num[100005],cnt[100005],p=0,minl=100000000,len;
int check(){
	for(int i=1;i<=p;i++){
		if(cnt[i] != 0)    return i;
	}
	return -1;
}
int main(){
    memset(num,100000005,sizeof(num));
    memset(cnt,0,sizeof(cnt));
    cin>>n;
    for(int i=1;i<=n;i++)    cin>>a[i];
    if(n==0){
    	cout<<'0';
    	return 0;
	}
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++){
    	if(a[i] == num[p]){
    		cnt[p]++;
		} else {
			p++;
			num[p]=a[i];
			cnt[p]++;
		}
	}
	int start=check();
	while(start != -1){
		len=1;
		for(int i=start+1;i<=p;i++){
			if(cnt[i] != 0 && cnt[i] >= cnt[i-1] && num[i] == num[i-1]+1){
				len++;
			} else {
				if(len < minl)    minl=len;
				break;
			}
		}
		for(int i=start;i<start+len;i++)    cnt[i]--;
		start=check();
	}
	cout<<minl;
	return 0;
}

提交后看到了这个(第3和第4两个点WA,其它点AC)

本蒟蒻向各位大佬们求助,这道题我错哪了?

2021/9/12 11:53
加载中...