Luogu P2168 NOI2015 荷馬史詩

2022-06-07 15:12:09 字數 707 閱讀 4376

給定一棵含\(n\)個葉子節點的\(k\)叉樹,其中第\(i\)的葉子有點權\(a_i\),要求最小化\(\sum w_i\times l_i\)

其中\(l_i\)表示到根節點的距離

並求出在權值和最小的情況下樹的最小深度

huffman樹

先將\(k\)叉樹用權值為0的點補滿,然後每次選出權值最小的\(k\)個點合併

可以用堆實現,但更能用佇列實現

先將葉子節點排序,再對合併的點單獨開乙個佇列

因為隨著合併數的增加,點權大小是嚴格遞增的

#include#define ll long long

using namespace std;

const int n=1e5+5;

int n,k,l,r; ll a[n],ans;

struct aq[n];

int main()

while((n-1)%(k-1)) n++;

sort(a+1,a+n+1);

int l=1; l=1,r=0;

for(int i=n;i;i-=k-1) ;

for(int j=1;j<=k;j++) else

} ans+=t.x,t.y++;

q[++r]=t;

if(i==k)

}}

P2168 NOI2015 荷馬史詩

追逐荷馬的人,自己就是影子 荷馬 追逐影子的人,自己就是荷馬 影子 追逐荷馬的人,自己就是荷馬 影子 追逐影子的人,自己就是影子 荷馬 allison 最近迷上了文學。她喜歡在乙個慵懶的午後,細細地品上一杯卡布奇諾,靜靜地閱讀她愛不釋手的 荷馬史詩 但是由 奧德賽 和 伊利亞特 組成的鴻篇巨制 荷馬...

題解 P2168 NOI2015 荷馬史詩

題目鏈結 題目大意 構造 k 叉哈夫曼樹 哈夫曼樹 分析 這題比較模板,可以當做複習初賽 大霧 哈夫曼樹的定義 構造一棵有 n 個節點的 k 叉樹,每個節點帶有權 w i 深度 d i 規定根深度為 0 使得 sum w i times d i 最小 當 k 2 時即為合併果子,因此可以想出顯而易見...

luoguP2254 NOI2005 瑰麗華爾茲

題目比較好,人比較菜。include define maxn 205 using namespace std int n,m,x,y,k,f maxn maxn maxn l,r,d,dx 7 dy 7 l,r,q maxn ans 0 char tu maxn maxn int main mems...