#11 TLE 求调
查看原帖
#11 TLE 求调
1317268
CuteLemonLMX楼主2025/6/29 20:44
#include <bits/stdc++.h>
using namespace std;
struct group{
	int last, len;
};
typedef vector<group>::iterator iter;

vector<group> v;
iter it;
int a[100010];
// ---- 100pts TLE on #11 ----
int main(){
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    sort(a+1, a+n+1);

    for (int i = 1; i <= n; i++){
    	iter minIter = v.end();
        if (v.empty()){
			v.push_back({a[i], 1});
			continue;
        }
        
        for (it = v.begin(); it != v.end(); it++){
        	// 枚举最大实力值是 a[i]-1 的
        	// 这样可以将 a[i] 拼接上去
			if (it->last == a[i] - 1){
				if (minIter->last != a[i] - 1 || it->len < minIter->len) // 找到长度最小的那个组
					minIter = it;
			}
		}
		
		// 如果有满足要求的小组就将 a[i] 添加进去
		if (minIter != v.end()){
			minIter->last = a[i];
			(minIter->len)++;
		}else{
			// 否则新开一个
			v.push_back({a[i], 1});
		}
    }
    
    int minn = 1e9;
    for (it = v.begin(); it != v.end(); it++){
		minn = min(minn, it->len);	// 枚举找出最小长度的小组
	}
	cout << minn << endl;
    return 0;
}
2025/6/29 20:44
加载中...