zoukankan      html  css  js  c++  java
  • POJ 2376

    题意:问最少要几个区间才能使区间 [ 1, T ] 全被覆盖掉

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <cstdlib>
     4 #include <cctype>
     5 #include <cmath>
     6 #include <time.h>
     7 #include <string>
     8 #include <map>
     9 #include <stack>
    10 #include <set>
    11 #include <queue>
    12 #include <vector>
    13 #include <algorithm>
    14 #include <iostream>
    15 using namespace std;
    16 typedef long long ll;
    17 #define PI acos( -1.0 )
    18 const double E = 1e-8;
    19 const int INF = 0x7fffffff;
    20 
    21 const int NO = 25000 + 5;
    22 int n, t;
    23 struct ND
    24 {
    25     int be, en;
    26 }st[NO];
    27 
    28 bool cmp( const ND &a, const ND &b )
    29 {
    30     if( a.be == b.be )
    31         return a.en > b.en;
    32     return a.be < b.be;
    33 }
    34 
    35 int main()
    36 {
    37     scanf( "%d%d", &n, &t );
    38     for( int i = 0; i < n; ++i )
    39         scanf( "%d%d", &st[i].be, &st[i].en );
    40     sort( st, st+n, cmp );
    41     int ans = 0;
    42     int k = 0;
    43     for( int i = 0; i < n; ++i )
    44     {
    45         if( k+1 >= st[i].be && st[i].en > k )
    46         {
    47             ++ans;
    48             int m = st[i].en, j;
    49             if( m >= t )
    50             {
    51                 printf( "%d
    ", ans );
    52                 return 0;
    53             }
    54             for( j = i+1; j < n; ++j )//起始时间在k+1中找最大的终止时间
    55                 if( st[j].be <= k+1 )
    56                 {
    57                     if( m < st[j].en )
    58                         m = st[j].en;
    59                     if( m >= t ) {
    60                         printf( "%d
    ", ans );
    61                         return 0;
    62                     }
    63                 } else break;
    64             k = m;
    65             i = j - 1;
    66         }
    67         else if( k+1 < st[i].be )
    68             break;
    69     }
    70     puts( "-1" );
    71     return 0;
    72 }
    View Code
  • 相关阅读:
    移动银盘 文件或目录损坏且无法读取 提示格式化
    error: Some data has already been output, can't send PDF file
    php pdf english french duch……应用攻略,ufpdf
    photoshop cs4 多语言
    c++常用知识小结
    简单的排序
    内存对齐
    socket网络编程常用的结构及函数小结
    字符和字符串处理小结
    几个小程序
  • 原文地址:https://www.cnblogs.com/ADAN1024225605/p/4097240.html
Copyright © 2011-2022 走看看