P1589 泥泞路
https://www.luogu.com.cn/problem/P1589
题意
- 有一段路,有泥泞的路也有好路。
- 可以铺设l长的木板。
- 求最少铺多少木板,使得都是好路。
想法
- 贪心+排序
- 按每条泥泞路的开始排序
- 从泥泞路开头铺设木板,直到能够覆盖
- 然后更新新的开头
//
// Created by majoe on 2020/5/30.
//
#include <bits/stdc++.h>
using namespace std;
int n, l;
struct b{
int s, t;
}bs[10010];
bool cmp(b b1, b b2){
return b1.s < b2.s;
}
int main(){
cin >> n >> l;
for (int i = 0; i < n; ++i) {
cin >> bs[i].s >> bs[i].t;
}
sort(bs,bs+n,cmp); // 让以路的开始排序
int st = bs[0].s; // st为每段开始铺路的开始节点
int ans = 0;
for (int i = 0; i < n ; ++i) {
while (st < bs[i].t){ //从泥泞路开头铺设木板,直到能够覆盖
st += l;
ans ++;
}
st = max(st,bs[i+1].s); //然后更新新的开头
}
cout << ans;
return 0;
}