POJ 2376

 1 #include<iostream>//by chengdacaizi.
 2 #include<stdio.h>
 3 #define MAXN 25005
 4 using namespace std;
 5 
 6 struct Cows 
 7 {
 8     int begin;
 9     int end;
10 };
11 
12 Cows cow[MAXN];
13 
14 int compare(const void * i,const void * j);
15 int main()
16 {
17     //freopen("acm.acm","r",stdin);
18     int i;
19     int j;
20     int n;
21     int t;
22     bool boo;
23     int last;
24     int max;
25     int tem;
26     int max_num;
27     int result;
28     scanf("%d %d",&n,&t);
29     for(i = 0; i < n; ++ i)
30     {
31         scanf("%d %d",&cow[i].begin,&cow[i].end);
32     }
33     qsort(cow,n,sizeof(Cows),compare);
34     last = 1;
35     i = 0;
36     max = 0;
37     result = 0;
38     boo = true;
39     while(1)
40     {
41         max = -1;
42         while(cow[i].begin <= last)
43         {
44             if((tem = cow[i].end - last) > max)
45             {
46                 max = tem;
47                 max_num = i;
48             }
49             ++ i;
50         }
51         if(max == -1)
52         {
53         //    cout<<cow[i].begin<<"   000000000000"<<endl;//很巧合的处理,当数组越界的时候,当然,还没有完成,那么自动跳出,cout<<-1;
54             boo = false;
55             break;
56         }
57         ++ result;
58         if(cow[max_num].end >= t)
59         {
60             break;
61         }
62         else
63         {
64             last = cow[max_num].end + 1;
65         }
66     }
67     if(boo)
68         cout<<result<<endl;
69     else
70         cout<<-1<<endl;
71 
72 }
73 
74 int compare(const void * i,const void * j)
75 {
76     return *((int *)i) - *((int *)j);
77 }
原文地址:https://www.cnblogs.com/gavinsp/p/4568377.html