社区讨论

求问

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 条回复,欢迎继续交流。

正在加载回复...