Problem
旋轉盤面,讓每顆球落入屬於自己的洞,請問至少需要幾次旋轉。
- 球不能翻過牆壁、不能跨越其他球、不能飛過空洞。
- 球不能離開盤面
- 每一格最多只有一顆球
- 當球落入空洞時,這個空洞相當於被填滿,其他的球可以經過這個被填滿的洞,但無法再次落入該洞。
Sample Input
|
|
Sample Output
|
|
Solution
首先有可能落錯空洞,模擬時必須特別小心這種非法的旋轉。在一次操作中,有可能在落入空洞的瞬間,下一個球剛好可以通過這個填滿的洞。
將每個球的座標壓成狀態,進行 Bfs 搜索。
|
|
旋轉盤面,讓每顆球落入屬於自己的洞,請問至少需要幾次旋轉。
|
|
|
|
首先有可能落錯空洞,模擬時必須特別小心這種非法的旋轉。在一次操作中,有可能在落入空洞的瞬間,下一個球剛好可以通過這個填滿的洞。
將每個球的座標壓成狀態,進行 Bfs 搜索。
|
|
販售冰淇淋。
已知每一種口味的冰淇淋、不同種的冰淇淋脆皮的庫存量,也已知冰淇淋口味與脆皮之間搭配獲得的利益。
求出在兜售完畢的情況下,最大獲益、最小獲益分別為何。
|
|
|
|
保證在兜售完畢的情況下,相當於 maxflow 流滿,那麼可以套用最少費用流來找到最少利益。為了解決最大獲益,取個補數來套用最少費用流模型。
|
|
給定多組組合票價的方案,以及目標的通行順序,請問最少花費需要多少。
組合票必須按照順序使用,當沒有使用完時,選擇將組合票拋棄。組合票之間,不會發生交替使用剩餘的部分,意即手上只能持有一張組合票,之前用到一半的組合票都必須拋棄。
目標的行程順序,走訪時中間可能會多繞路,但必須依序走訪目的地。
|
|
|
|
建圖方面相當麻煩,特別小心,有可能會在行程外的地點換組合票使用。
每個點的狀態為 (i, j),表示完成行程中第 i 個目的地,當前位置在地圖編號 j。因此針對每一個組合票,嘗試建造從行程中的第 i 個目的地,到下一個目的地。
隨後求最短路徑。
|
|
給定 N 盞燈,第一盞燈的所在高度 A。
Hi = (Hi-1 + Hi+1)/2 - 1在 Hi 不低於地面高度 0 的條件下,請問最後一盞燈的高度最低為何。
|
|
|
|
二分搜尋第二盞燈的高度,推算出所有燈的高度,必且找最小高度。
|
|
詢問區間最大值、最小值、標準差
A[l, r] = val。A[l, r] += val。
|
|
|
|
利用線段樹的懶操作,解決區間修改問題。
特別注意到區間的 assign 優先權高於 add,當懶操作 assign 被指派時,取消 add。將懶操作標記在節點 x 上,其 x 已經統計好結果,若發生要走訪 x 的子樹,將標記傳遞給子樹。
標準差的部分,可以利用 平方和 和 總和 計算之,因此紀錄總共需要四項 sum, sqr, mx, mn 來完成此題。
|
|
每個炸彈都有引爆範圍、炸彈半徑、以及炸彈所在座標。
1 : 1。求平均花費 (引爆總花費 / 引爆次數) 最小為何?
|
|
|
|
問平均最少花費是有原因的,如果只問最少花費只需要引爆無法被連鎖的炸彈,或者在 SCC 連通元件中找一個花費最小的炸彈。
首先,在一個連鎖反應下,先做 SCC 進行縮點,知道一個 SCC 元件中用花費最小的那個炸彈代表即可,將圖轉換成 DAG 後。indegree = 0 的點必然需要手動引爆,在這樣的情況下,已經能讓所有炸彈引爆。
為了要讓平均花費最小,勢必增加引爆炸彈的數量,引爆時便能降低平均花費,但引爆的順序必須按照拓樸排序,否則會違反 引爆過的炸彈,無法再次引爆 的規則。
藉此,根據貪心策略,將非 indegree = 0 的炸彈拿出,按照花費由小到大排序,從花費小的炸彈開始嘗試,直到平均花費無法變得更小。
選定哪個炸彈需要引爆後,仍要按照拓樸排序的方式輸出。
|
|
有 M 個人,B 個方案要進行投票表決。
每個人可以選擇 ki 個方案進行通過或不通過,其中 ki <= 4。找到一種方案的通過方式滿足所有人選擇項目的一半以上 (不含)。
|
|
|
|
由於 ki <= 4,又要滿足一半以上。則對於 ki = 1, 2 需要全部符合他們的項目。對於 ki = 3, 4 則不滿足其中一個選項 i 時,其他的選項 j 都必須滿足。
藉此套用 2-sat 模型,找到是否可能有可行解。當要輸出 2-sat 其中一解時,窮舉每一個變數為 true / false,建立一條邊 x -> x' / x' -> x,再用 2-sat 模型判斷是否有解即可。
找解速度會慢很多,這樣會比較好撰寫。
|
|
給予由陰陽離子構成的化合物,混和後會根據活性表發生變化,求其中一種穩定態。
所謂的穩定態,就是不會兩個化合物之間可以進行陰陽離子的互換。
|
|
|
|
一個經典的穩定婚姻問題 (stable marriage problem),可以用 Gale-Shapley algorithm 解決匹配兩邊個數相同的穩定婚姻。穩定婚姻有兩組最優解,其中一組最優解於男方、另外一組為女方,其最優解即為候選的排序為字典順序最小的。
假設現在要給男方一個最優解,那麼根據貪心的思路,男方要不斷地按照排名清單去向女方求婚,如果女方心中對求婚男方的排名更好,則男方求婚成功,而前男友就會被拋棄,被拋棄的男方將會根據清單再找下去。做法類似增廣路徑。
為什麼這樣能趨近穩定呢?原因是這樣子的,由於男方不斷地求婚,女方配對男方的排名會越來越好,男方被拋棄後,求婚對象則會越來越差。
假定男方為 A, B,女方為 1, 2,優先順序為括弧內,越靠前表示順位越高。
|
|
假如 A - 1 和 B - 2,則女 1 更喜歡男 A,女 2 更喜歡男 B,男方中也更喜歡對方的配偶 (這個例子中是相同),而造成配對交換,這即為不穩定婚姻。
解決會交換的情況。當嘗試配對一對男女時,如何保證不會發生循環交換?當男主被某女拋棄,則表示某女心中有一個更好的某男。男方按照順序求婚,就不會發生男方中會更喜歡對方的配偶而交換。
單看女方,了解到拋棄的動作是有限的,算法就能在 O(N^2) 解決。
|
|
島嶼居民要建造網路連到本島,假設現在島嶼跟島嶼之間都沒有架設網路線,現在開始建造網路,使得每一個島嶼都可以與本島或者是間接相連。
請問平均等待時間需要多少。
所有的路線,在同一時刻開始建造,以每一天一公里的速度建造所有的邊,而每一條邊都以歐幾里得距離為路線長度。
|
|
|
|
一開始沒有注意到同時建造,發現這條規則後,將所有邊的長度由小到大排序,使用并查集去紀錄,找到第一個時刻連到本島的時間。
|
|
聊天室會過濾過機器人般的垃圾留言,規則如下
只要符合其中一條,訊息將無法發送,但是系統仍然會記錄下你曾經發送過的訊息,其他使用者無法看到被過濾的訊息。
|
|
|
|
這題算簡單,但是題目描述過於鬼畜。
|
|