<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      挑戰程序設計競賽 2章習題 poj 2376 Cleaning Shifts

      地址  http://poj.org/problem?id=2376

       

      題目大意是 給出 N個區間 ,詢問最小需要選擇幾個區間能覆蓋 1~T的全部區間
      第一行輸入 N和 T
      后面N行 每行2個數字 表示區間的起點和終點
      要求輸出一行 選擇的最小區間個數 若無法覆蓋全部區間 則輸出-1
      
      Sample Input
      3 10
      1 7
      3 6
      6 10
      Sample Output
      2

       

      解法 

      貪心  將所有區間按照起點排序

      選擇能覆蓋當前點且結束最遲的區間 然后更新當前點到選擇的區間最遲的坐標 繼續選擇

      本來以為是一個區間覆蓋的模版題,結果wa了一下午,poj沒有數據提,偏偏樣例還能過

      看了別人的題解才發現 1~5 6~10居然也算是覆蓋了1~10全區間  這個沒數據真看不出來

      對于示例 就是

      排序后的區間是  1-7 3-6 6-10

      最開始我們需要找到覆蓋坐標1的最優區間 就是1-7

      我們取了一個區間 然后找到覆蓋坐標8的最優區間 就是6-10。此時取了兩個區間已經覆蓋了1-10的全部坐標。 

      答案為2

       

      代碼如下

      #define _CRT_SECURE_NO_WARNINGS
      #include <iostream>
      #include <algorithm>
      #include <stdio.h>
      
      using namespace std;
      
      const int N = 1000010;
      
      /*
      Sample Input
      
      3 10
      1 7
      3 6
      6 10
      Sample Output
      
      2
      */
      int n;
      struct Range
      {
          int l, r;
          bool operator< (const Range& W)const
          {
              return l < W.l;
          }
      }range[N];
      
      int main()
      {
          int st, ed;
          scanf("%d%d", &n, &ed);
          st = 1;
          for (int i = 0; i < n; i++)
          {
              int l, r;
              scanf("%d%d", &l, &r);
              range[i].l = l; range[i].r = r;
          }
      
          sort(range, range + n);
      
          int res = 0;
          bool success = false;
          for (int i = 0; i < n; i++)
          {
              int j = i, r = -2e9;
              //所有區間起點在當前點前的  取終點最遠的那個區間
              while (j < n && range[j].l <= st)
              {
                  r = max(r, range[j].r);
                  j++;
              }
              //如果所有區間都在當前點之前  那就無法覆蓋了 返回-1 跳出
              if (r < st)
              {
                  res = -1;
                  break;
              }
              //選擇區間個數加1
              res++;
              //選擇后的所有區間已經覆蓋到終點或者終點之后  那就得到了答案了
              if (r >= ed)
              {
                  success = true;
                  break;
              }
              //更新當前點 繼續下一輪尋找可覆蓋的區間
              st = r + 1;
              i = j - 1;
          }
      
          if (!success) res = -1;
          printf("%d\n", res);
      
          return 0;
      }

       

      posted on 2021-03-24 17:33  itdef  閱讀(81)  評論(1)    收藏  舉報

      導航

      主站蜘蛛池模板: 孕妇特级毛片ww无码内射| 我国产码在线观看av哈哈哈网站| 国内精品大秀视频日韩精品| 中文字幕少妇人妻精品| 人妻一区二区三区人妻黄色| 92精品国产自产在线观看481页| 麻豆精品在线| 思思99热精品在线| 日韩高清福利视频在线观看| 国产大片黄在线观看| 国产一区二区波多野结衣| 欧美性猛交xxxx免费看| japanese丰满奶水| 金门县| 在线成人国产天堂精品av| 亚洲av成人无码精品电影在线| 含紧一点h边做边走动免费视频 | 99久re热视频这里只有精品6| 成人精品一区二区三区四| 国产日韩精品中文字幕| 人妻少妇精品系列| 久久久无码精品亚洲日韩蜜桃| 护士张开腿被奷日出白浆| 欧洲精品免费一区二区三区| 吉川爱美一区二区三区视频| 亚洲欧洲精品一区二区| 精品亚洲一区二区三区在线播放| 一级女性全黄久久生活片| 白丝乳交内射一二三区| 亚洲va韩国va欧美va| 国产精品一区二区传媒蜜臀| 精品国产高清中文字幕| 石屏县| 人妻有码av中文字幕久久琪| 无码一区二区三区AV免费| 无套后入极品美女少妇| 亚洲熟妇乱色一区二区三区| 国产麻传媒精品国产av| 国产在线精品欧美日韩电影| 国产在线无码视频一区二区三区| 免费AV片在线观看网址|