社区讨论
求问
P2678[NOIP 2015 提高组] 跳石头参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mkgfuwbp
- 此快照首次捕获于
- 2026/01/16 13:29 上个月
- 此快照最后确认于
- 2026/01/18 18:05 上个月
为什么Subtask #1过不去
code
CPP#include<iostream>
#include<vector>
using namespace std;
const int MAXN = 50005;
int L, n, m;
int d[MAXN];
//void quicksort(int left, int right) {
// if (left >= right) return;
// int pivot = a[left];
// int i = left, j = right;
// while (i < j) {
// while (i < j && a[j] >= pivot) j--;
// while (i < j && a[i] <= pivot) i++;
// if (i < j) {
// swap(a[i], a[j]);
// swap(d[i], d[j]);
// }
// }
// swap(a[left], a[i]);
// swap(d[left], d[i]);
// quicksort(left, i - 1);
// quicksort(i + 1, right);
//}
bool check(int mid) {
int removed = 0;
int last = 0;
for (int i = 1; i <= n; i++) {
if (d[i] - last < mid) {
removed++;
}
else {
last = d[i];
}
}
return removed <= m;
}
int main() {
cin >> L >> n >> m;
for (int i = 1; i <= n; i++)
cin >> d[i];
int left = 1, right = L, ans = 0;
while (left <= right) {
int mid = left + (right - left) / 2;
if (check(mid)) {
ans = mid;
left = mid + 1;
}
else {
right = mid - 1;
}
}
cout << ans ;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...