当前位置: 首页 > wzjs >正文

php网站微信支付怎么做53建筑网官网

php网站微信支付怎么做,53建筑网官网,东营市招投标信息网,wordpress ldap 插件#算法/哈夫曼树 思路: 显然,这题需要将每个单词换成独立且没有前缀的进制字符串,显然,我们可以联想起来二进制哈夫曼树,我们只需要将二进制转换成我们要求的进制即可,但是,会出现一个问题,如果是二进制,显然,任何数量结点最终都会变成两堆,然后合并成一堆,但是,如果是三进制,…

#算法/哈夫曼树

思路:

显然,这题需要将每个单词换成独立且没有前缀的进制字符串,显然,我们可以联想起来二进制哈夫曼树,我们只需要将二进制转换成我们要求的进制即可,但是,会出现一个问题,如果是二进制,显然,任何数量结点最终都会变成两堆,然后合并成一堆,但是,如果是三进制,四进制…,显然,会出现无法恰好被合并成一堆的情况,那么,这会出现什么情况呢?
以三进制为例
假设有4个结点s1,s2,s3,s4
![[Pasted image 20250514121816.png]]

根据图示,我们会发现s1,s2,s3长度都为2,s4长度都为1
但是,如果我们补充结点s0,使得结点恰好被合并成一堆
![[Pasted image 20250514122151.png]]

我们可以根据图示得出
s1,s2长度为2,s3,s4长度为1
所以,在我们合并之前,需要先判断当前的结点是否能够恰好合并成一堆,如果无法恰好合并成一堆,我们需要补0,使得靠近根节点的结点尽可能多,不会出现空余的地方

1.定义结点

struct node {
//w表示权重ll w;
//h表示深度ll h;
//优先选择权重小的friend bool operator<(node n1, node n2) {
//如果权重相同,为了保证深度最小,优先将深度小的选出来if(n1.w==n2.w){return n1.h>n2.h;}else return n1.w > n2.w;}
}nodes[N];

2.保证结点数量恰好分配成一堆

  for (int i = 0; (n - 1 + i) % (m - 1) != 0; i++) {cnt++;nodes[cnt].w = 0;nodes[cnt].h = 1;pq.push(nodes[cnt]);}

3.寻找最小m堆

 while (pq.size() >= m) {ll w = 0;ll h = -1;for (int i = 1; i <= m; i++) {node tpq = pq.top();//我们每次找到子结点时,就将子节点的权重加起来,方便后序将子节点的深度加1w += tpq.w;pq.pop();h = max(tpq.h, h);}//子节点的所有深度加1,相当于将这些子节点的权重再加一遍sum += w;pq.push({ w,h + 1 });}

完整代码

#include<iostream>#include<string>#include<vector>#include<queue>using namespace std;int n, m;const int N = 1e5 + 30;typedef long long ll;ll cnt;struct node {ll w;ll h;friend bool operator<(node n1, node n2) {if(n1.w==n2.w){return n1.h>n2.h;}else return n1.w > n2.w;}}nodes[N];priority_queue<node>pq;int main(void) {cin >> n >> m;for (int i = 1; i <= n; i++) {cnt++;cin >> nodes[cnt].w;nodes[cnt].h = 1;pq.push(nodes[cnt]);}for (int i = 0; (n - 1 + i) % (m - 1) != 0; i++) {cnt++;nodes[cnt].w = 0;nodes[cnt].h = 1;pq.push(nodes[cnt]);}ll sum = 0;while (pq.size() >= m) {ll w = 0;ll h = -1;for (int i = 1; i <= m; i++) {node tpq = pq.top();w += tpq.w;pq.pop();h = max(tpq.h, h);}sum += w;pq.push({ w,h + 1 });}cout << sum << endl << pq.top().h - 1 << endl;}

文章转载自:

http://H04dUvEJ.rjLjb.cn
http://IxxJ0Mc4.rjLjb.cn
http://9xxCxQjr.rjLjb.cn
http://VY7QGCZ4.rjLjb.cn
http://86MWS2D2.rjLjb.cn
http://U7NraqJ6.rjLjb.cn
http://URH8CeSd.rjLjb.cn
http://AyyPSWVR.rjLjb.cn
http://lqG1PBJ0.rjLjb.cn
http://HmwamOq7.rjLjb.cn
http://bQXq04w9.rjLjb.cn
http://qhSldMKX.rjLjb.cn
http://fS4Wv2kN.rjLjb.cn
http://LiG9knkO.rjLjb.cn
http://owCrGR1x.rjLjb.cn
http://KANRQVM2.rjLjb.cn
http://of92GPz4.rjLjb.cn
http://Syh8J2AS.rjLjb.cn
http://0RB5hzv5.rjLjb.cn
http://2rcYUPUv.rjLjb.cn
http://r7ok32Bd.rjLjb.cn
http://JOiSoMuk.rjLjb.cn
http://Y8QWCZ29.rjLjb.cn
http://rYxA0l6e.rjLjb.cn
http://6BbTvn0t.rjLjb.cn
http://v8IJBo5w.rjLjb.cn
http://DGwaCKrE.rjLjb.cn
http://4N2dCvNR.rjLjb.cn
http://BHluPrYl.rjLjb.cn
http://I8DhVEcS.rjLjb.cn
http://www.dtcms.com/wzjs/663338.html

相关文章:

  • h5网站怎么做的吗专业网页美工招聘
  • 网站后台 栏目管理dw网页制作成品下载
  • 网站备案时间购买网站做网页游戏
  • 域名申请网站开网站公司
  • 网站建设首页布局新浪云计算 网站开发
  • 自己建立网站怎么做根优酷差不多的网站
  • 贵州省建设厅网站多少做wordpress
  • 公司网站建设 阜阳c 做网站网站
  • 福州+网站开发重庆的网站建设公司
  • 做正品的汽配网站隆昌住房和城乡建设官方网站
  • 中英文网站域名的区别申请免费网站多少钱
  • 网站开发配置状态报告网站需要加wordpress
  • 微信公众号配置 网站建设asp模板网站修改
  • 网站建设和优化北京网站营销与推广
  • 怎么建立网站赚钱陕西建设集团韩城公司网站
  • 南阳微信网站yw77731域名查询
  • 洛阳网站公司网站后台查找软件
  • 福州仓前网站建设泰安seo推广
  • 做门图网站wordpress 0day漏洞
  • 如何给网站做宣传代网站建设
  • 建设部职业资格注册网站项目设计方案模板
  • 温州网站建设团队通州富阳网站建设
  • 杭州做网站的网络公司有哪些WordPress徽章系统
  • 东莞网站优化排名公司同一个ip网站太多 seo
  • 网站建设理论知识海口网络公司
  • 淘宝客做软件网站app长沙网站设计多少钱一个月
  • 福州公司网站建设惠山网站建设
  • 网站代理 登陆签名图片在线制作
  • wordpress 维护中关键词如何优化排名
  • 魔站网站开发北京h5网页设计