B. Micro-World

题目链接

Educational Codeforces Round 45 (Rated for Div. 2)--B. Micro-World

题解

简单题,题意大概是给定一串细菌的大小,若某个细菌比另一个细菌大且不大于k,则可以吞噬那个细菌。求最后剩下细菌的最少数量。
直接排序后进行令每一个数与大于它的最小数比较即可。

代码

#include <iostream>
#include <algorithm>
using namespace std;
int n, k;
int a[1000005];

int main() {
    cin >> n >> k;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    sort(a + 1, a + n + 1);
    int ans = n;
    int now = n;
    for (int i = n - 1; i >= 1; i--) {
        while (a[now - 1] > a[i])now--;
        if (a[now] > a[i] && a[i] + k >= a[now])ans--;
    }
    cout << ans;
}

标签: sortings, greedy

添加新评论