1. 程式人生 > 其它 >1004 A. Sonya and Hotels

1004 A. Sonya and Hotels

技術標籤:訓練賽(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; }