Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 11486: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.

Similar presentations


Presentation on theme: "1 11486: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column."— Presentation transcript:

1 1 11486: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column 的 grid ,有 4 個 player 在第 一個 row 的其中四格,這些 player 都只能一起往下 一個 row 以斜對角來走,而且任一格都不能被兩 個以上的 player 走到。問這些 player 走到第 N 個 row ,種共有幾種走法 ? (test case 數 T<100, 1<=N<=1000000000)

2 2 題意範例: Sample Input:Output for Sample Input: 31 10 1 0 2 0 3 0 43 2 1 0 2 0 3 0 4 2 1 2 3 4 0 0 0 解法: 先以 players 在一個 row 中的位置來分類,然後依 照這些分類來求出走法的個數的遞迴關係。之後 將這些關係寫成矩陣後,再利用矩陣的任意 n 次 方 (n 為整數,n>=0) 可以 O(log n) 個矩陣乘法來計算 的特性,大大降低計算複雜度即可。

3 3 解法範例: 先以只有 3 個 column 、 2 個 player 來舉例,將 所有 player 在一個 row 的位置分類 : 然後假設從第 1 個走到第 i 個 row ,而且在第 i 個 row 的位置分別是屬於 A 、 B 、 C 三類的 走法個數為 a i 、 b i 、 c i 。 A:B:C:

4 4 解法範例: 以 A 類來說, player 在第 (i-1) 個 row 之後走到 第 i 個 row 且 player 排列狀態為 A 類有以下方 法 (i>=2) : 所以可以得到 a i =a i-1 +c i-1 AAAACACA

5 5 解法範例: 以同樣的方式,最後會得到 a i =a i-1 +c i-1 bi=0 c i =a i-1 +c i-1 最後,可以以矩陣來表示

6 6 解法範例: 令 可得遞迴關係為 之後只要展開遞迴關係就可以得到以下式子: 我們也就可以利用上面這個式子來計算 X N 的值。 只要以 O(log N) 個矩陣乘法的作法來求矩陣 M 的 (N-1) 次方之值,之後就可以輕易求得 X N 之值。 for i>1

7 7 解法範例: 假設一開始所給的 player 排列方式為 0 2 1 那可以知道它屬於 C 類,所以可得矩陣 X 1 之值

8 8 解法範例: 假設題目給定 N=5 ,我們就可以在 O(log N) 的時間複雜度下,求得: 最後可得

9 9 解法範例: 最後求出答案的方法是將最後得到的矩陣 X 5 的每個元素相加 ( 因為最後不管得到 A 、 B 、 C 三類的哪一類都行 ) 。 8+0+8=16

10 10 解法範例: 最後,當然要回到題目真正要求的狀況: 7 個 column 、 4 個 player 。如果按照前面範例 那樣的分類法,分出的類別個數為 35 個。 若以最簡單的矩陣乘法計算方式,單次矩 陣乘法的計算量為 35^3 ,並不算太大,可 以被接受。 另外另一個麻煩的問題是,這個 35 × 35 的 矩陣要如何求得?由於這個矩陣並不會因 為所給的測資的不同而改變,所以可以使 用另一個程式將這個矩陣事先求出。之後 將結果寫進程式碼中直接使用即可。

11 11 討論: (1) 雖然 35 × 35 的矩陣並不算太大,但是若 是想要使計算速度再加快,可以在分類時 將互相對稱的情形分為同一類。這樣可以 降到只使用 19 類,也就是矩陣大小為 19 × 19 ,可以進一步加快求得答案的速度。 (2) 除了在分類上著手,是否還有其他辦法 可以再加快計算的速度呢?


Download ppt "1 11486: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column."

Similar presentations


Ads by Google