Problem
抄答案如何快速檢查?題目是這樣子的,給定任兩點之間的路徑數,輸出從 i->j 兩步可到達的方法數。
現在只需要比對答案是否正確。
Sample Input
|
|
Sample Output
|
|
Solution
從矩陣乘法可以知道兩步內到達的方法數恰好是矩陣 $A \ast A$,假設答案是 B,A 和 B 都是 $n \ast n$ 矩陣,驗證 $A \ast A = B$ 是否正確,$A \ast A$ 用一般的矩陣乘法需要耗費 O(n^3)
的時間。
為了快速驗證,採用一個隨機算法,同乘上一個隨機的 n * 1 矩陣 C,那麼將問題轉換成
$(A \ast (A \ast C)) = B * C$發現每一步操作可以在 O(n^2)
時間內完成。
|
|