首页 > 其他分享 >POJ 15221 Entropy

POJ 15221 Entropy

时间:2024-07-12 12:33:19浏览次数:10  
标签:15221 int top pop num POJ ans Entropy include

题目链接:POJ 1521【Entropy 】



思路

       典型哈夫曼树,求哈夫曼树的带权路径长度。


代码

#include <iostream>
#include <queue>
#include <string>
#include <cstdio>
#include <algorithm>
#include <map>

using namespace std;

int main() {
  string s;
  priority_queue<int, vector<int>, greater<int> > q;
  while (getline(cin, s)) {
    if (s == "END")
      break;

    int num = 1;
    sort(s.begin(), s.end());
    for (int i = 0; i < s.length(); i++) {
      if (s[i] != s[i + 1]) {
        q.push(num);
        num = 1;
      } else {
        num++;
      }
    }

    int ans = 0;
    if (q.size() == 1)
      ans = q.top();
    
    while (q.size() > 1) {
      int a = q.top();
      q.pop();
      int b = q.top();
      q.pop();
      q.push(a + b);
      ans += (a + b);
    }
    q.pop();

    printf("%d %d %.1f\n", 8 * s.length(), ans, 8.0 * s.length() / ans);
  }
  return 0;
}

标签:15221,int,top,pop,num,POJ,ans,Entropy,include
From: https://www.cnblogs.com/againss/p/18298092

相关文章

  • POJ 3414 Pots
    题目链接:POJ3414【Pots】思路    对于每个A、B瓶的每个状态,使用结构体存储,同时pre存储操作前的状态的下标,方便回溯查询正确路径的操作,oper存储使用什么操作得到当前状态,operNumber存储到达当前状态需要几步。由于需要求的是最少的操作次数,所以使用BFS,依次增加操作次......
  • POJ 3126 Prime Path
    题目链接:POJ3126【PrimePath】思路    由于最多有100组样例,所以直接先初始化判断出1000-9999之间的数字是否是素数。然后再对每个题目所给的四位数进行BFS搜索,依次对每个数位进行枚举,使用0-9的每一个数字对每一个数位进行替换,注意千位上的数字不能为0。然后检验当前......
  • 一个项目代码讲清楚DO/PO/BO/AO/E/DTO/DAO/ POJO/VO
    在现代软件架构中,不同类型的类扮演着不同的角色,共同构成了一个清晰、模块化和可维护的系统。以下是对实体类(Entity)、数据传输对象(DTO)、领域对象(DomainObject)、持久化对象(PersistentObject)、业务对象(BusinessObject)、应用对象(ApplicationObject)、数据访问对象(DataAcces......
  • POJ 3278 Catch That Cow
    题目链接:POJ3278【atchThatCow】思路    将起点放入队列,然后一次取出队列中的元素,对其进行左右移动和乘2的移动,并判断移动后的位置是否合法,合法则放入队列中继续操作。每次取出队列中的元素后,通过假设剩下的步骤全部是左右移动一格来更新结果。代码#include<io......
  • POJ3017 Cut the Sequence
    POJ3017CuttheSequence题目大意给定一个一个长度为\(N\)的序列\(A\),要求把该序列划分成若干段,其中每一段中的数的和不大于\(M\),现在需要使得每一段中数的最大值的和最小,求该最小值。\[0\leqn\leq10^5\\0\leqm\leq10^{11}\\0\leqa_i\leq10^6\]解题思路......
  • 如何使用EntropyReducer降低Payload的熵并进行混淆处理
    关于EntropyReducerEntropyReducer是一款针对Payload隐蔽性增强的安全工具,在该工具的帮助下,广大研究人员能够有效地降低Payload的熵,并对Payload代码使用串行链表进行混淆处理。工作机制EntropyReducer的算法由BUFF_SIZE和NULL_BYTES的值决定,下图显示的是当BUFF_SIZE被设置......
  • 程序设计与算法(三)C++:第五章poj代码
    课程:北京大学程序设计与算法(三)   MOOCOJ:OpenJudge019:全面的MyString这个题也是有很多的成员函数,我们来从主函数分析一下:MyStrings1("abcd-"),s2,s3("efgh-"),s4(s1);//无参构造,有参构造,复制可以不写 MyStringSArray[4]={"big","me","about","take"......
  • PO/DO/VO/DTO/BO/POJO概念与区别
    一、PO/DO/VO/DTO/BO/POJO的介绍PO(PersistentObject)=DO(DataObject)持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。通过DAO层向上传输数据源对象。VO(ViewO......
  • 【90%人不知道的状态识别/故障诊断新方法】注意熵Attention Entropy及其5种多尺度熵-M
    目录引言数据集特征提取分类器诊断流程友情提示Matlab代码下载点击链接跳转:引言注意熵(AttentionEntropy,翻译可能不准确哈,请谅解)于2023年发表在顶级期刊IEEEtrans系列-IEEETransactionsonAffectiveComputing(影响因子:11.2)。注意熵首次提出并运用于心跳间隔时......
  • 程序设计与算法(三)C++:第四章poj代码
    课程:北京大学程序设计与算法(三)   MOOCOJ:OpenJudge014:MyString这个题需要写的函数有点多我们来分析一下。charw1[200],w2[100]; while(cin>>w1>>w2){ MyStrings1(w1),s2=s1;//构造函数题目有了,不用写//复制构造函数没有,需要写 MyStrings3......