計蒜客: 路燈
阿新 • • 發佈:2018-11-17
https://nanti.jisuanke.com/t/16497
題目描述
一條長為L路,上有N個公共座椅(忽略長度),現在在路上要修路燈,每個路燈覆蓋的長度為l,為了讓所有座椅都被路燈覆蓋到最少需要多少路燈?
輸入描述
第一行為三個正整數L(<=10^9), N(<=1000), l(<=L)用空格隔開,第二行包括N個整用空格隔開的數xi(0<=xi<=L),代表每個路燈的位置。
輸出描述
輸出最少需要的路燈數。
樣例輸入
10 4 2 0 2 6 7
樣例輸出
2
題目來源
貪心,只要讓每個路燈剛好覆蓋它左邊一個座椅即可。
#include<stdio.h> #include<algorithm> using namespace std; #define N 1020 int a[N]; int main() { int L,l,i,n,flag,ans; scanf("%d%d%d",&L,&n,&l); for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); flag=a[0]+l; ans=1; for(i=1;i<n;i++) { if(flag<a[i]) { flag=a[i]+l; ans++; } } printf("%d\n",ans); return 0; }