推 EdisonX:轉去 Prob_Solve 應較佳。 180.177.76.161 08/17 16:17
→ EdisonX:補一下,我也不知道正解,但我會用 bucket. 180.177.76.161 08/17 16:24
推 rifiz:用兩個heap, 一個max 一個min 就可以達到 114.43.191.241 08/17 17:33
※ sorryChen:轉錄至看板 Prob_Solve 08/18 00:20
→ sorryChen:兩個heap如何能有效的找中位數呢? 108.94.138.88 08/18 00:22
→ sorryChen:話說有個DS叫MinMaxHeap,但無關中位數 108.94.138.88 08/18 00:24
推 JingXD:疑.. 不是online看新還的比現在有中位數 203.77.50.240 08/18 01:10
→ cathat:把所有的數字依大小分兩半 128.8.115.58 08/18 03:32
→ cathat:minHeap 存大的那一半的最小的一個 128.8.115.58 08/18 03:32
→ cathat:maxHeap 存小的大一半最大的那一個 128.8.115.58 08/18 03:32
→ cathat:median 可以從這兩個數字推出來 128.8.115.58 08/18 03:34
推 Huangs:如樓上說狦兩個heap,而且用fibonacci heap 118.166.90.91 08/18 04:34
→ Huangs:fibonacci heap的insert/find分攤都是O(1) 118.166.90.91 08/18 04:34
推 Huangs:兩個heap 一個存大的一半 一個存小的一半 118.166.90.91 08/18 04:37
→ Huangs:然後一直保持兩個heap一樣大 118.166.90.91 08/18 04:38
→ Huangs:中位數就在兩個heap的root。 118.166.90.91 08/18 04:38
→ BombCat:可是如果能依大小分兩半那就表示已經知道220.132.195.217 08/18 09:48
→ BombCat:中位數了?220.132.195.217 08/18 09:49
→ Arton0306:不過還要delete, fib heap是lnN 114.42.54.141 08/18 10:52
推 suhorng:大小是固定一半一半的 一開始只有一個元 118.166.56.185 08/18 12:13
→ suhorng:素當然沒問題 以後每次加入新的都要維持 118.166.56.185 08/18 12:13
→ suhorng:兩邊元素個數差不多 118.166.56.185 08/18 12:14
→ sorryChen:感謝給位大師及Prob_Solve有版友賜教 108.94.138.88 08/18 13:07
→ sorryChen:所以這個問題應該只有O(mlnN)的解法 108.94.138.88 08/18 13:08
→ sorryChen:m是隨後新加入的元素 108.94.138.88 08/18 13:09
推 singlovesong:應該沒有linear解法 203.77.50.240 08/18 15:16
→ singlovesong:每進來一個新值 勢必會動到舊的 203.77.50.240 08/18 15:17
→ singlovesong:資料 沒有辦法在O(1)插入新值 203.77.50.240 08/18 15:17
→ singlovesong:且還保持資結sorted的狀態 203.77.50.240 08/18 15:17
推 Huangs:沒有刪除的話,是可以linear的。 118.166.140.98 08/18 23:17
推 singlovesong:請問要怎麼做@@? 203.77.50.240 08/19 10:18
推 Huangs:就是前面講的,fibonacci heap 118.166.140.98 08/19 11:33
→ Huangs:的insert/find都是 O(1) (amortized) 118.166.140.98 08/19 11:33
推 Huangs:我想起來還是要delete才能維持兩heap平衡 118.166.140.98 08/19 11:37
→ Huangs:果然還是沒辦法 @@ 118.166.140.98 08/19 11:37
推 yoco315:嗯,難的就是平衡的時候要用掉lnN :( 219.70.204.108 08/20 07:40