[問題] Sum of Three Values 使用雜湊表
看板Prob_Solve (計算數學 Problem Solving)作者nevikw39 (▎#如詩的韻律™♪)時間3年前 (2021/08/15 01:53)推噓0(0推 0噓 8→)留言8則, 2人參與討論串1/1
各位電神安安 o'_'o
Sum of Three Values 應該算是很經典的題目,其簡化版本 Sum of Two Values 常見的解
法有兩種,分別是用雜湊表及 two pointer
有趣的是在 CSES 上使用 std::unordered_map 及 GNU PBDS 的 gp_hash_table 分別各有
一筆測資 TLE, 反而改用 BST 才 AC, 證實 log 只是常數 XD
回過頭來看 Sum of Three Values, 我想同樣有雜湊表與 three pointer 兩種解法。
CSES 上 N <= 5000, 顯然需要至少 O(N^2) 的解。
https://cses.fi/problemset/task/1641
這次試過 gp_hash_table, cc_hash_table, unordered_map 但測資 #21 始終過不了。
我也上網搜尋比較好的 hash function, 還是 TLE.
https://reurl.cc/4a05rY
把測資載下來研究,cc_hash_table 約十秒多,cc_hash_table + custom hash function
約七秒,cout IMPOSSIBLE 完直接 exit(0) 不管記憶體壓到四秒多,BST 則是慘烈的三十
幾秒
https://cses.fi/paste/25d625b68bc3c2b828e863/
但我的很好奇為何會這樣??
明明 N 不過才 5000, 只做 12497500 次查詢竟然要花上 4.3 秒!?
這筆測資到底有何神秘之處??其他同樣 N = 5000 且無解的測資頂多跑個 0.1 秒而已。
實在找不到程式的瓶頸在哪,優化讀 5000 個整數也只快零點零幾秒。
想請教各位板友,這題是非用 three pointer 不可嗎??可是我看 Sum of Four Values
好像還是用雜湊表耶。
還是 hash function 有甚麼改進之處??
感謝
--
看到國外 IP, 尤其是來自奇怪地區,請多加留意是否為跳板。
https://ptt.nevikw39.cf/
輸入 ptt 上的 id, 即列出其最近上站的 10 個 IP 地址、日期、國家與是否為跳板。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.240.165.72 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1628963639.A.030.html
→
08/15 03:20,
3年前
, 1F
08/15 03:20, 1F
→
08/15 03:20,
3年前
, 2F
08/15 03:20, 2F
→
08/15 03:25,
3年前
, 3F
08/15 03:25, 3F
→
08/15 03:26,
3年前
, 4F
08/15 03:26, 4F
→
08/15 03:26,
3年前
, 5F
08/15 03:26, 5F
→
08/15 10:20,
3年前
, 6F
08/15 10:20, 6F
→
08/15 10:20,
3年前
, 7F
08/15 10:20, 7F
→
08/15 10:20,
3年前
, 8F
08/15 10:20, 8F
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章