AI & Data Dreamers練功房
寶箱片場規則
ALGO GATES・演算法關卡・高階・3 題

演算法高階・排程與區間

這一頁是題幹試閱;登入/註冊後每題可以在瀏覽器裡執行、對答案,第一次交對 +10 XP。

  1. 01

    最少需要幾個 worker

    困難區間/堆積

    一批爬蟲任務各有開始與結束時間(分鐘,半開區間 [start, end),所以一個任務結束的同一分鐘,另一個可以接著用同一個 worker)。同一個 worker 同時只能跑一個任務。

    輸入:

    第 1 行:n

    接下來 n 行:start end

    輸出:兩行

    第 1 行:至少需要幾個 worker

    第 2 行:同時執行任務數達到最大值的「最早時間點」

    範例輸入:

    3

    0 10

    10 20

    5 15

    範例輸出:

    2

    5

    類型對應:LeetCode「Meeting Rooms II」類(情境與敘述為本平台改寫)。

    輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。

    作答登入後可作答
  2. 02

    同類任務冷卻排程

    困難貪婪+計數

    單一 worker 每分鐘執行一個任務。為了避免同一個 API 被打太密,「相同類型」的兩個任務之間至少要隔 n 分鐘(中間可以排其他任務或閒置)。

    輸入:

    第 1 行:n

    第 2 行:任務類型(空白分隔的單一大寫字母)

    輸出:完成全部任務最少需要幾分鐘。

    範例輸入:

    2

    A A A B B B

    範例輸出:

    8

    類型對應:LeetCode「Task Scheduler」類(情境與敘述為本平台改寫)。

    輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。

    作答登入後可作答
  3. 03

    所有 worker 共同空檔

    困難區間合併

    要找一段所有 worker 都閒置的時間來做系統升級。每個 worker 有若干段忙碌時段(分鐘,閉區間 [start, end],同一 worker 的時段已排序且不重疊)。

    輸入:

    第 1 行:w(worker 數)

    接下來 w 行:該 worker 的忙碌時段,格式「start-end」,空白分隔

    輸出:所有 worker 都閒置、長度大於 0 的時段,每段一行「start end」。只看「最早忙碌開始」到「最晚忙碌結束」之間的空檔。沒有共同空檔印 NONE。

    範例輸入:

    2

    1-3 6-7

    2-4 9-12

    範例輸出:

    4 6

    7 9

    類型對應:LeetCode「Employee Free Time」類(情境與敘述為本平台改寫)。

    輸入請用 input() 逐行讀取(平台不支援 sys.stdin)。執行時平台會把每一行測資回顯在輸出最前面,這是正常的,不用自己印。本題在瀏覽器內以 Pyodide 執行,只用標準函式庫。先把全部輸入讀完再輸出,不要在迴圈裡邊讀邊印(回顯行會插進輸出中間,就對不上答案)。

    作答登入後可作答