NOIP 2017 集訓散記
阿新 • • 發佈:2017-10-05
余數 left 下一個 ... tro 給定 跑步 割點 同余
17.10.5
Maze
題意
給定一張 $n \times m$ , 包含空地 ‘.‘ 和障礙 ‘#‘ 的格點圖.
給定起點和終點, 求從起點到終點的必須經過點有多少個.
$n, m \le 10 ^ 3$ .
分析1 - 搜索
找到從起點到終點盡可能靠左上的路徑和盡可能靠右下的路徑, 然後取並.
分析2 - Tarjan
若 low[son] >= dfn[x] , 且 son 的後繼中有終點, 那麽 x 為從起點到終點的割點.
懶人跑步 - 同余最短路
題意
給定一個大小為 4 的環, 以及每條邊的邊權.
懶人CJB從點 2 出發, 每次可以走到相鄰的一個點, 最後回到點 2 .
求路徑總長 >= K 的走法中, 路徑總長最小是多少?
$K \le 10 ^ {18}, d \le 30000$ .
分析
找到一個長度為 Len 的環, 那麽若存在路徑總長為 x , 那麽所有模 Len 與 x 同余, 且比 x 長的長度都可以走得到.
用 Dijsktra 求出余數為 0, 1, ..., Len-1 的最小的路徑長度.
[HDU 6136] 賽艇大賽
題意
在環上有 $n$ 個人, 第 $i$ 個人在位置 $d_i$ , 速度為 $v_i$ . 兩個人相遇時, 標號小的那個人會掛掉. 剩下一個人的時候結束, 求結束時間.
$n \le 10 ^ 5$ .
分析
第一次相遇一定是相鄰的兩個人, 把掛掉的那個人刪掉後, 第二次相遇仍然是相鄰的兩個人....
用堆和雙向鏈表維護 {x, y, x 和 y相遇的時間} , 進行模擬.
NOIP 2017 集訓散記