1条回答 默认 最新
- 跃起的影子 2021-06-10 16:38关注
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n, r; int a[1005]; void solve() { sort(a, a + n); int i = 0, ans = 0; while (i < n) { int s = a[i++];//s是没有被覆盖的最左边的点的位置 while (i < n && a[i] <= s + r)//一直往右前进直到距s的距离大于r的点 i++; int p = a[i - 1];//p是新加上标记的点的位置 while (i < n && a[i] <= p + r)//一直往右前进直到距p的距离大于r的点 i++; ans++; } cout << ans << endl; } int main() { cin >> n; cin >> r; for (int i = 0;i < n;i++) cin >> a[i]; solve(); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 划分vlan后不通了
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
- ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数