CF1004A题解
思路
既然说了新酒店和其他酒店最小距离是 \(d\),那我们可以先在两边建,即最初 \(ans=2\)。然后再一个个枚举两个相邻的酒店,尝试在相邻两个酒店之间建造酒店,如果重合了就只可建造一个酒店,否则如果距离大于 \(2\times d\) 就可建造两个酒店。
代码
#include<bits/stdc++.h>
using namespace std;
long long a[105];
int main(){
long long n,d,ans=2;
cin>>n>>d;
for(long long i=1;i<=n;i++) cin>>a[i];
for(long long i=1;i<n;i++){
int b=a[i+1]-a[i];
if(b==2*d) ans++;
else if(b>2*d) ans+=2;
}
cout<<ans;
}

浙公网安备 33010602011771号