HDU 1053 - Entropy
2016-05-06 13:21
295 查看
求哈夫曼编码后最小内存
就是个哈夫曼编码原理
取最小的两个值合并在一起
深度就是被合并了几次
所以直接把每次合并结果加到答案里
这样 n 次合并就表示 n 的树深,该位置的量就被累计加了 n 次, 即 子节点权值*n
就是个哈夫曼编码原理
取最小的两个值合并在一起
深度就是被合并了几次
所以直接把每次合并结果加到答案里
这样 n 次合并就表示 n 的树深,该位置的量就被累计加了 n 次, 即 子节点权值*n
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; char s[10000]; int c[28]; bool cmp(int a,int b) { return a>b; } int main() { while(~scanf("%s",s),strcmp(s,"END")) { memset(c,0,sizeof(c)); int m=strlen(s); for(int i=0;i<m;i++) { if(s[i]=='_') c[0]++; else c[s[i]-'A'+1]++; } sort(c,c+27,cmp); int n=0; while(c ) n++;//取前面有效点集 int ans=0; for(int i=n-1;i>0;i--) { c[i-1]+=c[i]; //合并 ans+=c[i-1]; sort(c,c+i,cmp);//更新点集 } if(n==1) ans=c[0]; printf("%d %d %.1lf\n",8*m,ans,8.0*m/ans); } }
相关文章推荐
- HDU 1673 Optimal Parking(看懂就是水题)
- centos7 gradle
- Linux下的sudo及其配置文件/etc/sudoers的详细配置说明
- HOW TO REMOTELY DEBUG APPLICATION RUNNING ON TOMCAT FROM WITHIN INTELLIJ IDEA
- tomcat服务器环境搭建
- Ubuntu&红帽的vim通用配置(文件头+一键编译执行C/C++/Java单文件)
- 准备工作Canopy安装Day1
- Centos 中yum常用命令讲解
- linux软件安装和卸载
- Linux操作系统普及
- 查看系统调用与信号
- 天兔(Lepus)监控操作系统(OS)配置
- nginx php fastcgi Connection reset by peer的原因及解决办法
- Linux 操作系统下如何优雅的卸载软件
- Nginx(负载均衡)+keepalived(双机热备)
- 如何邀请好友注册您的网站(模拟百度网盘)
- squid如何做正向代理,通过重定向器匹配正则重写url
- 架构设计:系统间通信(29)——Kafka及场景应用(中2)
- 服务器基础 tomcat端口被占用问题的解决
- Linux入门操作小技巧(持续更新)