Problem
給定一個 N * M 的地圖,接著將會從起點出發抵達終點,一開始的速度為 (0, 0)
,在下一個時刻,每一個維度的速度可以調整 -3, -2, -1, 0, 1, 2, 3
(也就是加速度),但是速度的絕對值必須小於等於 3,同時給定這張地圖的矩形障礙物,移動的過程中不用考慮會不會遇到障礙物,只需要考慮跳躍落下的地點是否有障礙物。
Sample input
|
|
Sample output
|
|
Solution
bfs 廣度搜索
|
|
給定一個 N * M 的地圖,接著將會從起點出發抵達終點,一開始的速度為 (0, 0)
,在下一個時刻,每一個維度的速度可以調整 -3, -2, -1, 0, 1, 2, 3
(也就是加速度),但是速度的絕對值必須小於等於 3,同時給定這張地圖的矩形障礙物,移動的過程中不用考慮會不會遇到障礙物,只需要考慮跳躍落下的地點是否有障礙物。
|
|
|
|
bfs 廣度搜索
|
|
在一個 B 進制數中,找到一個最小的數字 X,使得 2 * X 的結果恰好是 X 循環右移一位的結果 (意即最末位的數字推到首位,其餘往右推一位)。
例如範例給的
|
|
末尾的 8 移動到首位,其餘往右推一位。
|
|
|
|
假設末位數字是 M,且 M 的數值一定介於 $ 0 <= M < B $,最後根據公式推
$$2*(NM) = MN, 0 \le M < B \\ 2(N * B + M) = N + B^{(k-1)} * M \\ N = M * \frac{(B^{(k-1)} - 2)}{(2 * B - 1)}$$從位數少開始窮舉,再依序從 M 小的開始窮舉,找到可以整除的整數 N 值,做一次小整數的大數乘除法即可,並不會太難。
|
|
對於一個 N * M 的灰階矩陣,找一個重心 $(c_{x}, c_{y})$,重心會符合將
$$|column[0, c_{x}-1] - column[c_{x}+1, N-1]| \\ |row[0, c_{y}-1] - row[c_{y}+1, M-1]|$$最小化, 其中 column, row 表示該列、該行的總和。如果有數個相同,則盡可能輸出最右小角的座標 (座標值越大越好)
|
|
|
|
其實會發現 x 軸、y 軸的結果可以分開計算,是不會影響最後的結果,兩別分別取最佳的位置即可。
而為了求這個值,累計每一行、列的總和,使用 O(n)
掃描計算即可。參照代碼。
|
|
有一個神秘的球時鐘,球時鐘會有三個堆疊位置,分別是存放每分鐘、每五分鐘、每一個小時的球球,軌道每一分鐘會將一個球釋出,並且滾入位置,放置的位置優先順序為每分鐘、每五分鐘、每小時。
如果滾入的位置分別滿了 5, 12, 12 個球,則該位置的球將會按照原本進入順序的反順序放入軌道隊列的最晚端。在剛好滿的那個瞬間,那個球將會到次優先的位置去。
假使球有各自的編號,請問在第幾天的同一個時刻後,會回到原本的位置。
|
|
|
|
先模擬一天下去後,得到每一天位置改變的情況,也就是會得到置換群的結果,根據這個結果,計算每一個置換週期,取最小公倍數即可。
|
|
給定一個三維空間建築物配置,給予每一個建築物西南方的端點,以及距離的深度,面向的建築物寬度和高度。求從南面往北面看過去,有多少建築物是可以被看到一部分的?
|
|
|
|
將題目轉換成區間覆蓋,只有距離近會蓋住距離遠的,同時高度比較高的才能算是遮住一個區間,否則不能算是遮蔽一個完整的區間,因為仍然會從南面看到。
最後對一個建築物,找到所有遮蔽區間,檢查是否完全遮蔽自己的區間。
檢查部分使用掃描線算法。
|
|
給一張 N * M 的試算表,並且給定每一格的值可以倚靠其他欄位的結果。是否存在循環依賴?如果不存在則將每一格的答案計算出,否則將輸出存有循環依賴上的所有格子情形。
|
|
|
|
其實就最簡單就是利用高斯消去找解,但是測資中最討厭的地方在於假使 A0 = A0-A0
這種情況也要算依賴關係,那麼高斯消去仍然找得到所有變數的解。
所以最後還是弄一個 dfs 找是否會抵達環上任何一點。
如果將這些資訊排除,圖就是一個 DAG,不用高斯消去也是相當容易的模擬計算。
|
|
題目給定在 n * m 的格子中,以及一些障礙物,求一個最大空白矩形。
|
|
|
|
帶入單調堆。
線性時間 O(NM) 完成。紀錄每一列的向左拓展最寬為何,然後對於每一列(假設它是矩形的最右側的邊上)找到最大矩形。
|
|
告訴你那些是同義詞,以及誰與誰是反義詞,最後回報是否有矛盾情況。
|
|
|
|
對於每個詞建立兩個節點 (正反兩種意思的節點),同義詞則對兩個正做連接,只需要對建造反義祠的時候檢查,查詢每次是否會落在相同集合的操作。
|
|
家產劃分給兩個人,兩個人分配的房子總價值必須相同,剩下無法劃分的房子將換成現金分配給兩個人,求換成現金的總額最小為何?
|
|
|
|
窮舉分配情況,並且試圖將後期分配肯定會失敗的情況剪掉。
|
|
在 N 個點的地圖中,有兩家運輸公司 A, B,如果它們都有在 x, y 之間部屬線路,則運輸費用將會根據參數 a 進行調整 a * Ca + (1 - a) * Cb
,求從編號 0 到 N-1 的最少花費為何。
|
|
|
|
每一次詢問 a 的時候,就做一次 spfa。似乎沒有別的方法可以預處理訊息。
|
|