Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 11402: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id)

Similar presentations


Presentation on theme: "1 11402: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id)"— Presentation transcript:

1 1 11402: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id) 是 0~(N- 1) ,並且分為兩隊 (Buccaneer 和 Barbary) 。有一個巫師可 以使用咒語來改變一段連續編號 ( 假設是 a 到 b) 的海盜他們 所在的隊伍。有三種方式,不論原本如何一律變為 Buccaneer 隊成員 ( 輸入格式 :F a b) ,或一律變為 Barbary 隊 成員 (E a b) ,或是變成另一隊成員 (I a b) ,而上帝會詢問 某段連續編號的海盜中有幾個是 Buccaneer 隊成員 ( 以 S a b 表示 ) 。你寫的程式要輸出上帝詢問的答案。 ( 會依格式給出海盜的初始狀態 )

2 2 題意範例: input: 1 3 3 00 2 10 3 11 5 I 0 5 F 2 8 S 7 15 E 6 9 S 2 9 output: Case 1: Q1: 8 Q2: 4 0000001010111111 I 0 5 1111111010111111 F 2 8 1111111110111111 E 6 9 1111110000111111

3 3 解法: 利用操作 ( 下咒語 ) 和詢問時的數字邊界,將整個範圍 (0~(N-1)) 分為一些互不重疊的區間,記錄每個區間有幾 個 Buccaneer 隊海盜,然後再按照操作及詢問的順序來改 變所記錄的數值及取得詢問的結果即可。 實際可行的分區間的方法:假設有一行操作是 ”I a b” ,則 將 b 及 (a-1) 記錄起來,每一行的數字紀錄完成後將全部數 字由小而大排序並去掉重複的數字及小於 0 的數字,得到 一序列: a 1 a 2 a 3 … a m ,可以分得 [0,a 1 ],(a 1,a 2 ],…,(a m-1,a m ], 若 a m !=N-1 可以再加上一區間為 (a m,N-1] 。 解法範例:無 討論: 由於海盜人數 N 最大可到 1024000 ,操作 ( 下咒語 ) 和詢問 的總數 Q 最大可到 1000 。而使用簡單的方法模擬時間複雜 度為 O(N*Q) ,可能會 TLE 。 ( 使用上面的解法時間複雜度 為 O(N+Q^2))


Download ppt "1 11402: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id)"

Similar presentations


Ads by Google