2011年2月6日 星期日

Codeforces #37 C Old Berland Language

題意非常簡單﹕給了L1, L2, ... LN,1 <= Li <= 1000, 1 <= N <= 1000,問有沒有N個prefix-free binary code使得長度符合所有Li。

想了良久,沒有好的辦法,結果Google了一下,知道Huffman Coding保証給出所有符號都是Prefix-free的,但顯然對此題沒有幫助。但間接的想法是﹕建立一棵類似這樣的二叉樹,每個Li對應建立二叉樹中一個長度為Li的Leaf Node。有了這個想法之後就是順著這個方法建立二叉樹,萬一不能建立Leaf Node的話,則代表所有Prefix-free code用盡。注意的是必須按遞增長度插入Leaf Node。然後順輸入的次序輸出相對應的字串。

沒有留言: