#25439: 簡單的 2-pass O(n) & 輸出嚴格比對


allllllan123456 (God of Computer Science)

學校 : 國立臺灣大學
編號 : 13732
來源 : [140.109.20.138]
最後登入時間 :
2021-07-08 17:41:52
d666. 00763 - Fibonacci numbers -- UVa763 | From: [111.242.212.214] | 發表日期 : 2021-05-21 21:37

因為費式進位制的進位動作會同時動到高位跟低位,所以這題大部分人的作法每次都要檢查全部的位數是否符合規則,總時間複雜度會是 O(n^2);

但是!!!就在今天,被我搜到一篇 CMU CS 系的碩士論文,http://reports-archive.adm.cs.cmu.edu/anon/2020/CMU-CS-20-118.pdf#page=19

它在這一頁 Algorithm 3 很巧妙的提出了如何從高位 (MSB) 到低位 (LSB) 依序把超過 1 的數字清掉,使得最後只剩下 0 跟 1 的 digit;(論文的方法)

再從低位 (LSB) 到高位 (MSB) 每次抓一段連續的 1,並從該段的高位到低位依序把兩個連續的 1 轉成不連續的 1,最後就得到合法的進位制。(我想到的方法)

證明的精華在於為什麼論文能順利地清除所有超過 1 的數字,非常漂亮,自己想的話很難想到。

------------------------------------------------------------------------------------------------------------------------------------------------------------

另外這題有開啟嚴格比對,測資間要輸出一空行,但最後一筆的結尾不要有空行,否則會有 OLE。

 
#25444: Re:簡單的 2-pass O(n) & 輸出嚴格比對


allllllan123456 (God of Computer Science)

學校 : 國立臺灣大學
編號 : 13732
來源 : [140.109.20.138]
最後登入時間 :
2021-07-08 17:41:52
d666. 00763 - Fibonacci numbers -- UVa763 | From: [111.242.212.214] | 發表日期 : 2021-05-22 00:41

怕網頁失效來補個標題:

Linear Time Addition of Fibonacci Encodings,

Maoyuan (Raymond) Song,

CMU-CS-20-118,

May 2020

 
ZeroJudge Forum