給定一棵含\(n\)個葉子節點的\(k\)叉樹,其中第\(i\)的葉子有點權\(a_i\),要求最小化\(\sum w_i\times l_i\)huffman樹其中\(l_i\)表示到根節點的距離
並求出在權值和最小的情況下樹的最小深度
先將\(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...