社区讨论
80求调
P4447[AHOI2018初中组] 分组参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lzgl8uev
- 此快照首次捕获于
- 2024/08/05 14:06 2 年前
- 此快照最后确认于
- 2024/08/05 15:00 2 年前
80分求调
C#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
int a[100010];
int k[100010];
signed main(){
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
sort(a + 1, a + 1 + n);
int l = 1, r = n;
while (l <= r){
memset(k, 0, sizeof(k));
int ans = 0;
int mid = (l + r) / 2;
for (int i = 2; i <= n; i++){
if (a[i] - a[i - 1] > 1)
ans++;
else k[ans]++;
}
for (int i = 0; i <= ans; i++)
k[i] += 1;
// cout << ans << "\n";
// for (int i = 0; i <= ans; i++)
// cout << k[i] << " ";
// cout << "\n";
int minn = 0x3f3f3f3f;
for (int i = 0; i <= ans; i++)
minn = min(minn, k[i]);
if (minn > mid) l = mid + 1;
else r = mid - 1;
}
cout << l;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...