日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LOJ#2132. 「NOI2015」荷马史诗

發(fā)布時間:2023/12/20 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LOJ#2132. 「NOI2015」荷马史诗 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

$n \leq 100000$個數(shù)字,放進$k$叉樹里,一個點只能放一個數(shù),使所有數(shù)字乘以各自深度這個值之和最小的同時,最大深度的數(shù)字最小。

哈夫曼。這是我剛學(xué)OI那段時間看到的,感覺就是個很無聊的貪心,而且密碼學(xué)我也不學(xué)深對哈夫曼的應(yīng)用也了解不多,沒想到出現(xiàn)在noi。

原來的哈夫曼只需要每次拿k個最小的數(shù)出來,建一個他們共同的父親并在一起,當(dāng)作一個權(quán)值為他們權(quán)值之和的新點,用堆可以實現(xiàn);由于$(n-1) \mod (k-1)$不一定為0,需要補幾個0點進去。相對于原來的哈夫曼,這里多了個深度限制,那只需要把堆里元素再記一下最大深度就可以了。

1 //#include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 //#include<math.h> 5 //#include<set> 6 #include<queue> 7 //#include<bitset> 8 //#include<vector> 9 #include<algorithm> 10 #include<stdlib.h> 11 using namespace std; 12 13 #define LL long long 14 int qread() 15 { 16 char c; int s=0,f=1; while ((c=getchar())<'0' || c>'9') (c=='-') && (f=-1); 17 do s=s*10+c-'0'; while ((c=getchar())>='0' && c<='9'); return s*f; 18 } 19 20 //Pay attention to '-' , LL and double of qread!!!! 21 22 int n,K; 23 #define maxn 200011 24 struct qnode 25 { 26 LL v; int dep; 27 bool operator > (const qnode &b) const {return v>b.v || (v==b.v && dep>b.dep);} 28 }; 29 priority_queue<qnode,vector<qnode>,greater<qnode> > q; 30 31 int main() 32 { 33 n=qread(); K=qread(); LL v; 34 for (int i=1;i<=n;i++) {scanf("%lld",&v); q.push((qnode){v,0});} 35 if ((n-1)%(K-1)) for (int i=1,to=(K-1)-(n-1)%(K-1);i<=to;i++) q.push((qnode){0,0}),n++; 36 LL ans=0; 37 for (int i=1,to=(n-1)/(K-1);i<=to;i++) 38 { 39 LL nv=0; int nd=0; 40 for (int j=1;j<=K;j++) nv+=q.top().v,nd=max(nd,q.top().dep),q.pop(); 41 ans+=nv; q.push((qnode){nv,nd+1}); 42 } 43 printf("%lld\n%d\n",ans,q.top().dep); 44 return 0; 45 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/Blue233333/p/9288151.html

總結(jié)

以上是生活随笔為你收集整理的LOJ#2132. 「NOI2015」荷马史诗的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。