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;
}
posted @ 2022-02-09 19:27  cycwss  阅读(29)  评论(0)    收藏  举报