Problem
查找區間內,相鄰 k 個質數中,滿足最大減最小恰好為 s 的情況有多少個。
Sample Input
|
|
Sample Output
|
|
Solution
a, b 大小簡直不可思議,就算能做到全搜索,建表時間是線性,也必須跑上 20 億乘上 20。
先做一次 sieve,接著對 [a, b]
進行 local sieve,題目雖然沒說明 b - a 的大小,實際看來是非常小的。
|
|
查找區間內,相鄰 k 個質數中,滿足最大減最小恰好為 s 的情況有多少個。
|
|
|
|
a, b 大小簡直不可思議,就算能做到全搜索,建表時間是線性,也必須跑上 20 億乘上 20。
先做一次 sieve,接著對 [a, b]
進行 local sieve,題目雖然沒說明 b - a 的大小,實際看來是非常小的。
|
|
跳舞機共有四個方向,兩隻腳必須在某一個時刻按到該按鈕。
|
|
一開始雙腳站立於 0 的位置,每一個時刻只能移動一隻腳。
每一次移動的花費,0 到任何位置都是消耗體力 2、其餘數字移動到相鄰格子消耗體力 3、其餘數字移動到相面格子消耗體力 4,腳不動消耗體力 1。
過程中雙腳不能站立於同一個格子。
|
|
|
|
dp[i][j][k]
分別記錄時刻 i,左腳所在位置 j,右腳所在位置 k。分別進行轉移即可。
|
|
有一個 N 節點的樹,要架設服務的 server,必須滿足所有葉節點到最近的 server 距離小於等於 M。一開始會給定一個架好的 server。
求最少的放置個數。
|
|
|
|
針對加好的 server,將這個 server 當作 root,將 tree 轉換成 rooted tree,接著使用貪心。
盡可能放置越遠越好,根據 dfs 搜索的順序,查看內部節點 u,其子樹最遠的葉節點深度為何,以及子樹內部距離最近的 server 所在。
共計三種可能
|
|
有 N 個箱子,每個箱子都有 M 顆球,每一個箱子的黑、白球分配的個數不同,希望分成兩堆,每一堆必須有 N/2 個箱子,並且要符合黑球、或白球必須在兩堆佔有多數 (> 50%) 的情況。
假設佔有的比例分別為 m1, m2,最大化 min(m1, m2)
。
|
|
|
|
N 很大,M 也很大。一開始就目測需要 random 的隨機交換法,這樣湊出答案的機率是挺高的。
當然這有點不靠譜,使用 dp 背包問題,由於狀態數量太多,必須使用 set 壓縮。
dp[i][j]
表示放置前 i 個箱子,存在 j 個數的球。
統計兩色的球總個數,個數多的必然是最後佔有多數,決定球顏色後,針對個數進行背包問題的計算,由於每個箱子的球總數一樣,分成兩堆時,分母是固定的,因此可以無視另一個顏色的存在。
|
|
有數個不相交的簡單多變形,構成類似等高線的地勢圖,每一個簡單多邊形都有其代碼編號,接著有數個不按照順序的詢問點,請問所在的位置是在哪一塊。
|
|
|
|
首先用射線法,找到所有的簡單多邊形關係,O(n^2)
找到 DAG 圖。
接著將 DAG 圖縮成一個 rooted tree 圖,挑選深度最深的節點,外圍的深度是 0,越靠近裡面深度越高。
接著對於每一組詢問,從 root 開始走訪,直到沒有可以包含住這個點。
|
|
給定一組電路的連接,請問有多少個電網個數。
|
|
|
|
單純查找連通子圖的個數,使用并查集完成。
|
|
模擬一款推硬幣的遊戲,在一個 N x N 的盤面,可以從上下左右四個方向塞入自己的硬幣。
現在有兩個人輪流玩,一開始由 ‘X’ 作為先手,塞入硬幣的過程中,會將同行或同列的硬幣往前推,如果同一個的硬幣個數大於 N,則末端的硬幣將會掉出盤面。
模擬遊戲,直到其中一個玩家的連線個數大於另一名玩家,連線個數只看行、列皆具有相同硬幣的情況。
|
|
|
|
|
|
給一加密原則,現在要求解密,並且在只有一組文本情況下輸出正解。
一開始給定一字串 L,接著加密時,每一組訊息的 word,由左而右加密。
|
|
|
|
搜索,雖然看起來有點可怕,但是條件很多,如果搜索到兩種以上的情況,立即退出。
|
|
有 n 個鐵環,現在已知鐵環之間緊扣在一起,目標要把鐵環串成一鏈,可以選擇將鐵環剪開,隨後再將其串在一起。
找最少剪開的次數。
|
|
|
|
n < 15,窮舉哪幾個環需要剪開,接著把這些需要剪開的環先抽出來,查看剩餘的鐵環的情況,必須滿足都是鏈狀,而且連通元件的個數不能大於剪開的個數 + 1,如此一來,在放回剪開的環才能串在一起。
鏈狀的檢查:檢查每一個 node 的 degree 不可大於 2,同時不應該存在環。
|
|
模擬郵件發送的協定訊息,給定給一台 mail server 上的使用者名稱,接著發送群組訊息。
每一組發送者,會按照輸入順序的 mail server,將相同的 server 上的使用者統一發送,如果存在不合法的使用者名稱,必須回傳找不到,如果對一個 mail server 中都沒有合法使用者,則忽略此次傳送。
|
|
|
|
一個純模擬的題目,關於此類協定可以在計算機網路中學到。
保證寄信者都是合法的,小心每一行的資訊可能很長,用 char array 很容易 buffer overflow。也因此掛了很多 WA。
|
|