3 10 1 7 3 6 6 10
2
贪心php
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; #define MAX_N 100000 int N,T; struct Node { int s,t; } node[MAX_N]; bool cmp(const Node &a,const Node &b) { if(a.s!=b.s) return a.s<b.s; return a.t<b.t; } int main() { scanf("%d%d",&N,&T); for(int i=0;i<N;i++) scanf("%d%d",&node[i].s,&node[i].t); sort(node,node+N,cmp); int last=0; int cnt=1; int st=-1; while(st+1<N && node[st+1].s==1) st++; if(node[st].s!=1) { printf("-1\n"); return 0; } last=node[st].t; int nowt=st; int maxlast=last; int lasti=st; while(last<T && nowt<N) { int ti; for(ti=nowt+1;ti<N;ti++) { if(last+1<node[ti].s) break; else { if(maxlast<node[ti].t) { maxlast=node[ti].t; lasti=ti; } } } if(ti==nowt+1) break; else { last=maxlast; nowt=lasti; cnt++; } } if(last<T) printf("-1\n"); else printf("%d\n",cnt); return 0; }