Codeforces Round #495 A. Sonya and Hotels(模拟)

题意
给你n和d,然后按顺序给出n个数轴上的点,现在想加入一些点,要求这些点跟距离他最近的那个点的距离为d,问能加入多少个不同的点。
思路
对于一个数,如果他减去他的前一个大于2d 说明我可以放2个,如果等于2d说明我只能放a[i] - d, a[i-1] + d 那个位置,然后第一个和最后一个都可以放
代码

#include <bits/stdc++.h>
using namespace std;
int a[111];
int main()
{
    int n,d,ans = 0;
    cin >> n >> d;
    for (int i = 0; i < n; i++)
        cin >> a[i];
    for (int i = 1; i < n; i++) {
        if (a[i] - a[i - 1] == d * 2)
            ans += 1;
        else if (a[i] - a[i - 1] > d * 2)
            ans += 2;
    }
    cout << ans +2<< endl;
}

猜你喜欢

转载自blog.csdn.net/wjmwsgj/article/details/80985976