洛谷——P1589 泥濘路
阿新 • • 發佈:2017-11-20
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 泥濘路