1. 程式人生 > >洛谷——P1589 泥濘路

洛谷——P1589 泥濘路

iostream max += 多少 輸出 -c 輸入格式 ora style

P1589 泥濘路

題目描述

暴雨過後,FJ的農場到鎮上的公路上有一些泥濘路,他有若幹塊長度為L的木板可以鋪在這些泥濘路上,問他至少需要多少塊木板,才能把所有的泥濘路覆蓋住。

輸入輸出格式

輸入格式:

第一行為正整數n(≤10000)和L(≤10000),分別表示有多少段泥濘路和木板的長度;接下來n行,每一行兩個整數s和e(s≤e≤10^9),表示每一段泥濘路的起點和終點。

輸出格式:

僅一個正整數,表示木板數。

輸入輸出樣例

輸入樣例#1: 復制
3 3
1 6
13 17
8 12
輸出樣例#1: 復制
5

貪心
#include<cmath>
#include
<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 10010 using namespace std; int n,l,x,y,s,ans; int read() { int x=0,f=1; char ch=getchar(); while(ch<0||ch>9){if(ch==-)f=-1;ch=getchar();} while(ch>=0&&ch<=
9) x=x*10+ch-0,ch=getchar(); return x*f; } struct Node { int x,y; }node[N]; int cmp(Node a,Node b) {return a.x<b.y;} int main() { n=read(),l=read(); for(int i=1;i<=n;i++) { node[i].x=read(); node[i].y=read(); } sort(node+1,node+1+n,cmp); x
=node[1].x,y=node[1].y; for(int i=2;i<=n;i++) { if(node[i].x<=y) y=node[i].y; else { s=ceil(1.0*(y-x)/l); ans+=s; x=max(x+s*l,node[i].x),y=node[i].y; } } s=ceil(1.0*(y-x)/l),ans+=s; printf("%d",ans); return 0; }

洛谷——P1589 泥濘路