luoguP2168 [NOI2015]荷马史诗 哈夫曼树

本文探讨了在给定K值情况下如何构造K叉哈夫曼树,通过补充节点确保树的平衡,进而优化编码效率。适用于数据压缩等场景,文中详细介绍了算法实现过程及代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果不会哈夫曼树理论的话这题很难做出来吧...    

如果 K=2,就可以根据合并果子那样去构造.  

然后 K>2 的话就构造 k 叉哈夫曼树,如果不满足 $(n-1) \% (k-1)$ 的话就自动补一些进去. 

code: 

#include <bits/stdc++.h>   
#define ll long long  
#define N 100008 
#define setIO(s) freopen(s".in","r",stdin) 
using namespace std; 
int n,k;     
ll a[N]; 
struct data { 
    ll w,h;   
    data(ll w=0,ll h=0):w(w),h(h){}  
    bool operator<(const data b) const 
    {
        return w==b.w?h>b.h:w>b.w;  
    }
};  
priority_queue<data>q; 
int main() 
{ 
    // setIO("input");    
    int x,y,z,det=0; 
    scanf("%d%d",&n,&k);        
    for(int i=1;i<=n;++i)  scanf("%lld",&a[i]),q.push(data(a[i],1));       
    if((n-1)%(k-1)) det=k-1-(n-1)%(k-1);            // 补的节点           
    for(int i=1;i<=det;++i) q.push(data(0,1));   
    det+=n;    
    ll ans=0; 
    while(det>1) 
    {
        ll tmp=0,maxh=0;   
        for(int i=1;i<=k;++i) 
            tmp+=q.top().w,maxh=max(maxh,q.top().h),q.pop();   
        ans+=tmp; 
        q.push(data(tmp,maxh+1));      
        det-=k-1; 
    }     
    printf("%lld\n%lld\n",ans,q.top().h-1);     
    return 0; 
}

  

内容概要:本文档是Kenwood TK-6110 VHF FM收发器的操作手册,详细介绍了设备的基本功能、安装步骤和操作指南。手册首先感谢用户选择Kenwood产品,并强调了设备的安全性和合规性,包括FCC警告和政府法律禁止未经授权的无线电台操作。接着,手册逐步指导用户进行设备的拆箱检查、安装准备(如工具、电源连接)、安装步骤以及熟悉设备的前面板、后面板和麦克风布局。此外,还涵盖了基本操作(如开关机、音量调整、频道选择和通话)以及辅助功能(如定时断电、忙道锁定、双音多频呼叫等)。最后,提供了关于DTMF呼叫(手动拨号、重拨、自动拨号)的具体操作步骤。 适合人群:适用于需要使用Kenwood TK-6110 VHF FM收发器的专业用户或技术人员,特别是那些负责安装和维护移动通信设备的人员。 使用场景及目标:①帮助用户正确安装和配置Kenwood TK-6110 VHF FM收发器,确保其在车辆或其他移动平台上安全可靠地运行;②指导用户掌握设备的基本操作技能,如频道选择、通话、信号发送等;③提供详细的辅助功能设置说明,使用户能够充分利用设备的各种高级功能,如定时断电、忙道锁定、双音多频呼叫等。 其他说明:用户应仔细阅读并遵守所有安全警告和操作指南,以避免潜在的危害和法律问题。建议在安装和使用过程中咨询授权经销商或专业技术人员,以确保设备的正常运行和最佳性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值