Prob_Solve 板


LINE

先感謝這兩天 oToToT 和 cutecpu 的指導和討論。 概括這題的核心要求:O(1)的操作和CountSort/Radix-Sort 是Uva-10954的加強版,原版的作法可以用 PriorityQueue 完成。 兩題的差異在於 N=5e3 和 N=1e6 的量級,導致 PriorityQueue 的 log(N)作法會TLE。 而觀察過程可以發現一個有趣的規律: 每次合併數列中最小的兩個數字,合併後的這個數值是遞增的(廢話)。 但原版的作法是放回 PriorityQueue,但這樣就會浪費遞增這個性質,於是改良版就是 把合併後的數字用一個 Queue 存起來,每次放回數列的成本就降為O(1)。 取最小值時則只要考慮原本數列和現在這個 Queue 最前面的數字即可,所以也是O(1)。 詳細的作法請參考inversion文章:https://pse.is/EF4H5 但即便達成上述的要求後還是可能會在最後一筆測資吃TLE,這裡就要談到加速讀取。 一般加速讀取會談到 cin/cout 和 scanf()/printf() 的說明 可以參考這篇:https://pse.is/HMHLT。 我自己用getchar()做加速讀取還是不夠的。 但這篇的測資輸入最大會 > 50M,以上的作法仍是不夠的,因為IO次數還是太多。 於是我們便需要更底層的輸入函數:fread() 或者是 fgets() fread()版本(oToToT撰寫):https://pastebin.com/gdbX9QxX === 以下是fread()讀取相關的說明文章,文章解釋得很仔細就不多說僅附上網址 https://zhuanlan.zhihu.com/p/55304700 === fgets()版本(cutecpu撰寫):https://ideone.com/usX8gE 越底層的函數需要越清楚停止條件和讀入緩衝區的大小,這邊我舉fgets()為例, 題目的第二行最多會有1e6個數字,每個數字不超過1e6(以字串來看長度不超過7), 且數字間用空白隔開,所以緩衝區的大小是1<<23( 7e6 ),停止條件是'\n'。 附上兩個函數的使用方式和差異:https://pse.is/HKWJY 以及上述讀取函數的時間比較:https://pse.is/J2A5N 最後排序的部分:假若採用CountSort約 0.4s 而呼叫內建的Qsort是 0.7s。 結論來說 TLE 的主因還是讀取方式,排序方式不是決定的關鍵。 如果大家有其他想法歡迎在下面留言,我晚點也會一並整理到內文中。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.222.86.91 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Prob_Solve/M.1559748493.A.B22.html
1F:推 oToToT: ZJ的時間測量好像不是非常的stable 06/05 23:51
2F:→ fatcat8127: 感謝oToToT和cutecpu的回覆,晚點整理兩位大大的內容 06/06 17:34
3F:→ pttworld: 這題用getchar()勉強寫進1s內。 06/06 18:26
※ 編輯: fatcat8127 (61.222.86.91 臺灣), 06/07/2019 16:55:57 ※ 編輯: fatcat8127 (61.222.86.91 臺灣), 06/07/2019 18:22:36
4F:→ firejox: getchar_unlocked 06/09 13:19
※ 編輯: fatcat8127 (61.222.86.91 臺灣), 06/17/2019 02:43:46
5F:→ fatcat8127: 關於加速讀取和輸出的練習可以嘗試ZJ-e273 06/17 03:41







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP