Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 11419: SAM I AM ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11419: SAM I AM 解題者:李重儀 解題日期: 2008 年 9 月 11 日 題意: 簡單的說,就是一個長方形的廟裡面有敵人,然 後可以橫的方向開砲或縱向開砲,每次開砲可以.

Similar presentations


Presentation on theme: "1 11419: SAM I AM ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11419: SAM I AM 解題者:李重儀 解題日期: 2008 年 9 月 11 日 題意: 簡單的說,就是一個長方形的廟裡面有敵人,然 後可以橫的方向開砲或縱向開砲,每次開砲可以."— Presentation transcript:

1 1 11419: SAM I AM ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11419: SAM I AM 解題者:李重儀 解題日期: 2008 年 9 月 11 日 題意: 簡單的說,就是一個長方形的廟裡面有敵人,然 後可以橫的方向開砲或縱向開砲,每次開砲可以 消滅一整個 row 或 column 的敵人,要如何開砲可 以消滅所有敵人而且開砲的次數最少?

2 2 題意範例: 例如以下是敵人在廟中的位置 : 則可以對第 1 個 row 和第 4 個 cloumn 開砲,就可以 以最少的開砲次數 (2 次 ) 消滅所有敵人。 就可以輸出一行是 2 r1 c4 ●● ●

3 3 解法: 首先先建立一個 bipartite graph ,左邊的點的個數就等於 row 的個數, 每一個 node 對應一個 row ,右邊則是每一個 node 對應到一個 column , 然後如果在某一個位置有敵人,就在那個 graph 上相對的兩個 node 連 一條 edge 。 之後可以看的出來,解出題目的問題就相當於解 minimum vertex cover 的問題,解出來的 nodes 就可以對應到原題目所要的結果。 然後由 König‘s theorem 可以知道,我們可以解原圖形上的 maximum matching 的問題,所得到的邊的個數會和 minimum vertex cover 所得 到的 vertex 數相同。 而要解 maximum matching ,可以將原圖形再加上兩個點 (source 和 sink) 和一些邊後利用 maximum flow 的演算法來解。 解出 maximum matching 後得到幾個邊後,要得到 minimum vertex cover 的問題的解答的話,可以由左邊沒有 match 成功的 node 開始,以 BFS( 或 DFS) 的方式,往右走沒被選到的邊,然後標記右邊走到的 node ,再往左走有被選到的邊,一直進行下去(但走過的 node 不要 重複走 ) 。所有右邊有標記的 node 和左邊有 match 成功而且相對的右邊 node 沒標記的左邊 node 全部合起來就可以得到 minimum vertex cover 的答案了。

4 4 解法範例:無 討論:無


Download ppt "1 11419: SAM I AM ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11419: SAM I AM 解題者:李重儀 解題日期: 2008 年 9 月 11 日 題意: 簡單的說,就是一個長方形的廟裡面有敵人,然 後可以橫的方向開砲或縱向開砲,每次開砲可以."

Similar presentations


Ads by Google