zoukankan      html  css  js  c++  java
  • POJ 2376 Cleaning Shifts 题解 《挑战程序设计竞赛》

    题目:POJ - 2376

    思路:

    所有可工作的区间左端点进行排序,如果没有从1开始的,直接输出-1;

    否则,从最早的区间开始,寻找左端点在这个区间之内,同时右端点大于这个区间右端点的区间,如果找不到,说明中间断掉,也输出-1;

    中间没有断掉的话,就不断循环上述过程,直到当前工作结束时间大于shifts的最大值。

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <stdio.h>
     4 
     5 using namespace std;
     6 
     7 int n;
     8 int t;
     9 pair<int, int> invl[25000]; 
    10 
    11 void solve() {
    12     sort(invl, invl + n);
    13     int res = 0;
    14     int cur = 0;
    15     
    16     while (cur < t) {      
    17         int maxT = 0;
    18         int count = 0;
    19         
    20         for (int i = 0; i < n; i++) {
    21             if (invl[i].first <= cur + 1 && invl[i].second > cur) {
    22                 count++;
    23                 maxT = max(maxT, invl[i].second);
    24             }
    25         }
    26         
    27         if (count == 0) {
    28             printf("-1");
    29             return;
    30         }
    31         cur = maxT;
    32         res++;
    33     }
    34     
    35     printf("%d", res);
    36 }
    37 
    38 int main() {
    39     scanf("%d %d", &n, &t);
    40     int maxT = 0;
    41     for (int i = 0; i < n; i++) {
    42         scanf("%d %d", &invl[i].first, &invl[i].second);
    43         maxT = max(maxT, invl[i].second);
    44     }
    45     if (maxT < t) {
    46         printf("-1");
    47     } 
    48     else {
    49         solve();
    50     }
    51     return 0;    
    52 }
  • 相关阅读:
    HTML5响应式导航
    草原图片大全
    草原psd素材
    仿堆糖图片自滚动瀑布流效果
    夏日户外风景PSD素材
    国画经典之梅花PSD素材
    更改VS的运行主窗体
    在VS中如何更换项目名称
    如何使用Visual Studio 2008(VS2008)编译C语言
    #region 私有字段
  • 原文地址:https://www.cnblogs.com/carolunar/p/6378739.html
Copyright © 2011-2022 走看看