bzoj4198 Noi2015 荷馬史詩

2022-05-21 13:33:14 字數 908 閱讀 2973

(題目鏈結)

一篇文章n個單詞,每個出現了$$次,用k進製數代替單詞,使得任意單詞不是另乙個單詞的字首。如何選擇使文章的總長度最小,且在總長度最小情況下最長的k進製數的長度最小是多少

lcf不寫部落格→_→,我只好自己寫了。。

將每個單詞看成權值為$$的節點,很顯然是個k叉哈弗曼樹,考慮k=2的情況,就是乙個「合併果子」。但是對於一般情況如果我們用用合併果子的做法會wa,因為可能第一層的節點並沒有滿,那麼如果把某乙個葉子節點放到第一層一定會更優。所以我們加節點,其權值為0,直到$$,也就是說合併到最後一步一定正好剩下n個節點。

考慮第二問,我們在堆中新增第二關鍵字,就是當前最深節點的深度。於是問題就解決了。

開ll,堆裡面也要開→_→

// bzoj4198

#include#include#include#include#include#include#include#define ll long long

#define inf 1<<30

#define pi acos(-1.0)

#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);

using namespace std;

const int maxn=100010;

int n,k;

struct data

};int main() );

} while ((n-1)%(k-1)) n++,q.push((data));

while (q.size()>1)

ans+=w;

q.push((data));

} printf("%lld\n%d",ans,q.top().d);

return 0;

}

BZOJ 4198 Noi2015 荷馬史詩

追逐影子的人,自己就是影子。荷馬 allison 最近迷上了文學。她喜歡在乙個慵懶的午後,細細地品上一杯卡布奇諾,靜靜地閱讀她愛不釋手的 荷馬史詩 但是由 奧德賽 和 伊利亞特 組成的鴻篇巨制 荷馬史詩 實在是太長了,allison 想通過一種編碼方式使得它變得短一些。一部 荷馬史詩 中有 n 種不...

4198 Noi2015 荷馬史詩

題目鏈結 題目大意 一篇文章有n個單詞,其中第i個單詞的出現次數為w i 你要用k進製串s i 替換第i種單詞。要求 對於任意i j,都有s i 不是s j 的字首。要使替換後的文章總長度最小。求這個最小總長度。在這個前提下,要使s i 的最大長度最短,求這個最短的長度 題解 k叉哈夫曼樹 取最小的...

BZOJ 4197 Noi2015 壽司晚宴

為了慶祝 noi 的成功開幕,主辦方為大家準備了一場壽司晚宴。小 g 和小 w 作為參加 noi 的選手,也被邀請參加了壽司晚宴。在晚宴上,主辦方為大家提供了 n 1 種不同的壽司,編號 1,2,3,n 1,其中第 i 種壽司的美味度為 i 1 即壽司的美味度為從 2 到 n 現在小 g 和小 w ...