1004 A. Sonya and Hotels
阿新 • • 發佈:2021-01-27
技術標籤:訓練賽(1)Round #495 (Div. 2)
題意:在x軸上分佈有n個酒店,座標已知。現給你一個距離d,求在x軸上距離任意酒店最短距離為d的點有幾個。
理想情況下就是2*n個點,每個酒店的左邊和右邊都有距離為d的一個點存在著。但是存在兩個酒店之間只會有一個點或是沒有點存在的情況。例如d=2時,兩個酒店座標分別為0和4,這時候只會有-2,2,6三個點存在;又如d=2時,兩個酒店座標分別為0和3,這時候只會有-2,5兩個點存在。所以對於兩個酒店間距=2d時,就會形成共用一點的情況;間距<2d時,兩家酒店之間就不存在點。
#include <bits/stdc++.h>
using namespace std;
#define qc std::ios::sync_with_stdio(0);
int a[100001];
int main() {
qc;
cin.tie(0);
int n, l;
cin >> n >> l;
long long ans = 2 * n;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 2; i <= n; i++) {
if (a[i] - a[i - 1] < 2 * l)
ans -= 2;
if (a[i] - a[i - 1] == 2 * l)
ans -= 1;
}
cout << ans;
}