社区讨论

(玄关)有大佬知道这道题的思路怎么写吗

B4274 [蓝桥杯青少年组省赛 2023] 数字游戏参与者 3已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mhjtca8z
此快照首次捕获于
2025/11/04 08:10
4 个月前
此快照最后确认于
2025/11/04 08:10
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n;
int a[1000005];
int p, q;
int ans;

int check() {
	int diff = 1;
	int t = a[1];
	for (int i = 1; i <= n; i++) {
		if (a[i] != t) {
			t = a[i];
			diff++;
		}
	}
	return diff;
}

signed main() {
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	sort(a + 1, a + n + 1);
	p = 1, q = n;
	while (check() >= 3) {
		for (int i = p; i <= n; i++) {
			if (a[i] > a[p]) {
				a[p] = a[i];
				break;
			}
		}
		ans++;
		if (check() < 3) {
			break;
		}
		for (int i = q; i >= 1; i--) {
			if (a[i] < a[q]) {
				a[q] = a[i];
				break;
			}
		}
		ans++;
		/*for (int i = 1; i <= n; i++) {
			cout << a[i] << " ";
		}
		cout << "\n";*/
	}
	int maxx = -1, minn = 1000001;
	for (int i = 1; i <= n; i++) {
		maxx = max(maxx, a[i]);
		minn = min(minn, a[i]);
	}
	cout << ans << " " << minn << " " << maxx;
	return 0;
}

本蒟蒻的暴力代码
TLE 0%

回复

6 条回复,欢迎继续交流。

正在加载回复...