http://codeforces.com/contest/1004/problem/A
解题思路:
1.新添加一间酒店,要求酒店离已有的最近的一间酒店的距离恰好等于d
2.最左和最右必定存在合适的两种情况
3.酒店之间的情况就要判断两间酒店间的距离:
- 小于2d,表示无法在这两间酒店中间找到合适情况
- 等于2d,表示这两间酒店的正中间可以满足条件,新建酒店
- 大于2d,表示这两间酒店之间存在两种满足条件的情况
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
const int maxn = 100000 + 10;
int a[maxn];
int main() {
int n,cnt = 2;
long long d;
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)
cnt++;
else if(a[i] - a[i-1] > d * 2)
cnt += 2;
}
cout << cnt << endl;
return 0;
}