75 是什么问题
查看原帖
75 是什么问题
906320
Milky_Cat楼主2024/12/23 21:00

我至今不会这道题,觉得比 20 年贪吃蛇都困难,这合理吗。

下面是我的 75 分代码。出考场看不懂了。

#include<bits/stdc++.h>
using namespace std;
int n, a[100005], buk[1000005], mx = 0, mn = INT_MAX, cnt = 0, js = 0, ans = 0;
int main(){
//	freopen("duel.in", "r", stdin);
//	freopen("duel.out", "w", stdout);
	scanf("%d", &n);
	for (int i = 1; i <= n; i++){
		scanf("%d", &a[i]);
		buk[a[i]]++;
		mx = max(mx, a[i]);
		mn = min(mn, a[i]);
	}
	if (buk[mn] == n){
	    cout << n;
	    return 0;
	}
	cnt += buk[mn];
	js += buk[mn];
	if (n - cnt <= buk[mn]){
		cout << cnt;
		return 0;
	}
	ans += buk[mn];
	for (int i = mn + 1; i <= mx; i++){
		if (!buk[i])
			continue;
		js += buk[i];
		if (min(n - cnt, n - js) <= buk[i]){
	//		cout << i << " " << cnt << " " << js << "\n";
			ans = ans + min(n - cnt, n - js);
			break;
		}
		ans += buk[i];
		cnt = js + buk[i];
	}
	printf("%d", n - ans);
	return 0;
}
2024/12/23 21:00
加载中...