码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 2376

时间:2015-03-09 22:23:00      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

连接点应该是只需连接而不必覆盖。

按开始时间排序。

假设当前最远为t,则按序枚举在t+1范围内开始的cow即可,再求出最远点。注意break条件。

技术分享
 1 #include <cstdio> 
 2 #include <iostream> 
 3 #include <cstring>  
 4 #include <cctype>  
 5 #include <algorithm>  
 6 #define LL unsigned __int64
 7 using namespace std; 
 8 
 9 const int N= 25100;
10 
11 struct Cow{
12     int s,e;
13     bool operator < (const Cow &a)const{
14         if(s<a.s) return true;
15         return false;
16     }
17 }cow[N];
18 int n,T;
19 
20 int main(){
21     while(scanf("%d%d",&n,&T)!=EOF){
22         for(int i=0;i<n;i++){
23             scanf("%d%d",&cow[i].s,&cow[i].e);
24         }
25         sort(cow,cow+n);
26         int i=0,t=0,j;
27         int ans=0;
28         if(cow[i].s>1){
29             puts("-1");
30             continue;
31         }
32         while(i<n&&t<T){
33             j=-1;
34             while(i<n&&cow[i].s<=t+1){
35                 j=max(j,cow[i].e);
36                 i++;
37             }
38             if(j<=t) break;
39             t=j;
40         //    cout<<t<<endl;
41             ans++;
42         }
43         if(t<T){
44             printf("-1\n");
45         }
46         else printf("%d\n",ans);
47     }
48     return 0;
49 }
View Code

 

POJ 2376

标签:

原文地址:http://www.cnblogs.com/jie-dcai/p/4324597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!