题解
贪心合并 合并策略每次尽量合并为较大的继续合并
先从小到大排序 从第二个开始如果和上一个相比大于m则ans++
AC代码
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e6 + 10;
int a[MAXN];
int main()
{
#ifdef LOCAL
//freopen("C:/input.txt", "r", stdin);
#endif
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a + n);
int ans = 1;
for (int i = 1; i < n; i++)
if (a[i] - a[i - 1] > m)
ans++;
cout << ans << endl;
return 0;
}
贪心算法解决合并问题

327

被折叠的 条评论
为什么被折叠?



