hdu1053 Entropy hdu2527 Safe Or Unsafe

裸裸的哈弗曼编码,求出哈弗曼编码的路径长度,注意整个字符串为一种字符的情况

View Code
#include<iostream>
#include<queue>
#include<algorithm>
#include<vector>
using namespace std;
struct node
{
int u,w;
node(int a=0,int b=0):u(a),w(b){}
bool friend operator <(const node a,const node b)//重载操作符
{
return a.w>b.w;
}
};
int f[150],n,num,d[150],root,ans;
char str[5000];
priority_queue<node> Q;
vector<int> g[500];//用向量保存每一个节点的儿子
void BTree()//建哈弗曼树
{
node p1,p2;
while(!Q.empty())
{
p1=Q.top();Q.pop();
p2=Q.top();Q.pop();
g[num].push_back(p1.u);
g[num].push_back(p2.u);
if(Q.size()==0)
break;
Q.push(node(num,p1.w+p2.w));
num++;
}
}
void DFS(int v,int deep)
{
if(g[v].size()==0)//叶子节点的深度即为编码长度
{
ans+=f[v]*deep;
return ;
}
for(int i=0;i<2;i++)
DFS(g[v][i],deep+1);
}
int main()
{
while(scanf("%s",str)==1)
{
if(strcmp(str,"END")==0)
break;
while(!Q.empty())
Q.pop();
memset(d,0,sizeof(d));
for(int i=0;i<strlen(str);i++)
d[(int)str[i]]++;
n=0;
for(int i=0;i<128;i++)
if(d[i]!=0)
{
f[n]=d[i];
Q.push(node(n++,d[i]));
}
if(Q.size()==1)
{
printf("%d %d 8.0\n",strlen(str)*8,f[0]);
continue;
}
num=n;ans=0;
BTree();
DFS(num,0);
int tt=strlen(str)*8;
printf("%d %d %.1f\n",tt,ans,tt*1.0/ans);
for(int i=0;i<=num;i++)
g[i].clear();
}
return 0;
}

 hdu2527

Safe Or Unsafe

基本一样的题

View Code
#include<iostream>
#include<queue>
#include<algorithm>
#include<vector>
using namespace std;
struct node
{
int u,w;
node(int a=0,int b=0):u(a),w(b){}
bool friend operator <(const node a,const node b)//重载操作符
{
return a.w>b.w;
}
};
int f[150],n,num,d[150],root,ans;
char str[5000];
priority_queue<node> Q;
vector<int> g[500];//用向量保存每一个节点的儿子
void BTree()//建哈弗曼树
{
node p1,p2;
while(!Q.empty())
{
p1=Q.top();Q.pop();
p2=Q.top();Q.pop();
g[num].push_back(p1.u);
g[num].push_back(p2.u);
if(Q.size()==0)
break;
Q.push(node(num,p1.w+p2.w));
num++;
}
}
void DFS(int v,int deep)
{
if(g[v].size()==0)//叶子节点的深度即为编码长度
{
ans+=f[v]*deep;
return ;
}
for(int i=0;i<2;i++)
DFS(g[v][i],deep+1);
}
int main()
{
int T,cmp;
scanf("%d",&T);
while(T--)
{
scanf("%d",&cmp);
scanf("%s",str);
while(!Q.empty())
Q.pop();
memset(d,0,sizeof(d));
for(int i=0;i<strlen(str);i++)
d[(int)str[i]]++;
n=0;
for(int i=0;i<128;i++)
if(d[i]!=0)
{
f[n]=d[i];
Q.push(node(n++,d[i]));
}
num=n;ans=0;
if(n==1)
{
if(strlen(str)<=cmp)
printf("yes\n");
else printf("no\n");
continue;
}
BTree();
DFS(num,0);
if(ans<=cmp)
printf("yes\n");
else printf("no\n");
for(int i=0;i<=num;i++)
g[i].clear();
}
return 0;
}

 

转载于:https://www.cnblogs.com/nanke/archive/2012/02/15/2353383.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sys.stdin.read和raw_input函数

sys.stdin.read函数 例子&#xff1a; import sysreadsys.stdin.read() for i in range(len(read)):print i,read[i],-1运行&#xff0c;当执行到readsys.stdin.read()会阻塞&#xff0c;等待我们输入 我们输入&#xff1a; h e当输入&#xff0c;ctrlD结束输入&#xff0c…

利用带关联子查询Update语句更新数据

Update是T-sql中再简单不过的语句了&#xff0c;update table set columnexpression [where condition]&#xff0c;我们都会用到。但update的用法不仅于此&#xff0c;真正在开发的时候&#xff0c;灵活恰当地使用update可以达到事半功倍的效果。 假定有表Table1&#xff08;…

web安全----XSS漏洞之基本原理

0x01 概述 XSS为跨站脚本攻击&#xff0c;XSS攻击针对的是用户层面的攻击&#xff01;类型有反射型XSS、存储型XSS、DOM型XSS&#xff0c;这里的DOM可以理解为页面&#xff0c;或者是所有的标签、内容之和 0x02 反射型XSS 反射型XSS攻击流程为&#xff1a; 即&#xff1a; …

web安全----xss工具使用3

XSSer 0x01 安装 环境&#xff1a;kali、python3&#xff08;必须是python3&#xff0c;kali默认为python2&#xff09; 安装步骤&#xff1a; git clone https://github.com/epsylon/xsser.git cd xsser sudo python3 setup.py install 使用命令&#xff1a; xsser -h查看…

web安全---XSS利用平台BLUE-LOTUS安装与使用

0x01 安装 环境&#xff1a;windows、phpstudy 下载地址&#xff1a;https://gitee.com/gid1314/BlueLotus_XSSReceiver-master 下载后将文件解压&#xff0c;重命名为blue&#xff0c;放在www目录下 访问&#xff1a;http://IP/blue 点击安装 这里只需要修改后台登陆密码和…

使用delphi 开发多层应用(十)安全访问服务器

前面讲了如何建立和访问服务器,但是前面建的服务器都没有安全控制&#xff0c;这里有很大的安全问题,第一是任何人做一个客户端都可以都可以访问 服务器。第二是数据在网络传输过程中都是明码的&#xff0c;没有加密&#xff0c;使用网络侦听器就可以检测到传输的内容。这是一个…

web安全---浏览器解析提交数据的过程

解码规则 html解析器对html文档进行解析&#xff0c;完成解析并创建DOM树JavaScript或者CSS解析器对内联脚本进行解析&#xff0c;完成js、css解码url解码会根据url所在的顺序不同而在JS解码或者解码后 解码顺序 html解析第一步执行&#xff0c;而JS解析和URL解析则要根据情…

利用POI创建OpenOffice中的Excel文件

之所以称为OpenOffice的Excel文件,我发现了一个特点就是: 一些网站严格限定了文件必须为MS的Excel格式的话,用POI的HSSF创建的Excel就会不识别.不知道是什么原因,可能是版本的问题,据说HSSF(令人讨厌的电子表格格式)生成的是MS97的格式.但是97-2003的提示中明显的说明了MS的lib…

web安全-----CSRF漏洞

简述 CSRF&#xff1a;Cross-site request -forgery&#xff0c;跨站请求伪造&#xff0c;是一种web攻击方式&#xff0c;是由于网站的cookie在浏览器中不会过期&#xff0c;只要不关闭浏览器或者退出登录&#xff0c;那以后只要访问这个网站&#xff0c;都会默认你已经登录。…

依赖、关联、聚合、组合还有泛化的关系(转载)

依赖、关联、聚合、组合还有泛化的关系 此文为转载文章:http://zjzkiss.cnblogs.com/世界是普遍联系的&#xff0c;因此程序世界中的类&#xff0c;也不可能是孤立的。UML为我们定义了它们之间的关系&#xff0c;就是&#xff1a;依赖、关联、聚合、组合还有泛化。 泛化关系比…

web安全---SSRF漏洞

简介 SSRF&#xff1a;服务器请求伪造&#xff0c;是一种攻击者构造形成由服务端发起请求 的一个安全漏洞。一般情况下&#xff0c;SSRF攻击的目标是从外网无法访问的内部系统&#xff08;正是因为它是由服务端发起的&#xff0c;所以它能够请求到与它相连而与外网隔离的内部系…

OD使用

0x01 功能界面 序号1是汇编代码对应的地址窗口序号2是汇编对应的十六进制机器码窗口序号3是反汇编窗口序号4是反汇编代码对应的注释信息窗口序号5是寄存器信息窗口序号6是当前执行到的反汇编代码的信息窗口序号7是数据所在的地址序号8是数据的十六进制编码信息&#xff0c;序号…

Java——集合的概述

* A&#xff1a;集合的由来* 数组是容器&#xff0c;集合也是容器* 数组的弊端&#xff1a;数组的长度是固定的&#xff0c;当添加的元素超过了数组的长度时&#xff0c;需要对数组重新定义&#xff0c;太麻烦* Java内部给我们提供了集合类&#xff0c;可以存储任意对象&#x…

排序算法中平均时间复杂度_操作系统中的作业排序(算法,时间复杂度和示例)...

排序算法中平均时间复杂度作业排序 (Job sequencing) Job sequencing is the set of jobs, associated with the job i where deadline di > 0 and profit pi > 0. For any job i the profit is earned if and only if the job is completed by its deadline. To complet…

python---文件处理

0x01 打开一个文件 python中内置了文件对象&#xff0c;通过open()函数就可以制定模式打开指定文件&#xff0c;并创建文件对象。该函数的格式如下&#xff1a; open(file[,moder[,buffering-1]])file&#xff1a;指定要打开或创建的文件名称&#xff0c;如果该文件不存在当前…

简易而又灵活的Javascript拖拽框架(四)

一、开篇 似乎拖拽已经被写烂了&#xff0c;没得写的了&#xff0c;可是我这次又来了&#xff5e; 上一次写的是跨列拖放&#xff0c;这次我要带给大家的是跨页拖放。 可以到这里来看看效果&#xff1a;示例效果 说明&#xff1a;1、如果将方框拖动到页签上立刻释放掉的话&…

python---异常处理结构

python中提供了很多不同形式的异常处理结构&#xff0c;其基本思路都是先尝试执行代码&#xff0c;再处理可能发生的错误。 try…except… 在python异常处理结构中&#xff0c;try…except…使用最为频繁&#xff0c;其中try子句中的代码块为可能引发异常的语句&#xff0c;e…

python---Socket编程

Sockte是计算机之间进行网络通信的一套程序接口&#xff0c;相当于在发送端和接收端之间建立一个通信管道。在实际应用中&#xff0c;一些远程管理软件和网络安全软件大多数依赖于Socket来实现特定功能&#xff0c;由于TCP方式在网络编程中应用非常频繁&#xff0c;此处将对TCP…

(X)HTML嵌套规则

本文整理于互联网~ 简单认识了块元素和内嵌元素以后&#xff0c;下面就可以罗列 XHTML 标签的嵌套规则了&#xff1a; 1. 块元素可以包含内联元素或某些块元素&#xff0c;但内联元素却不能包含块元素&#xff0c;它只能包含其它的内联元素&#xff1a;<div><h1>&…

ASP.NET Web API 处理架构

这篇文章主要是介绍ASP.NET Web API的处理架构&#xff1a;当一个HTTP请求到达直到产生一个请求的过程。ASP.NET Web API 的处理架构图如下&#xff0c;主要有三层组成&#xff1a;宿主&#xff08;hosting&#xff09;&#xff0c;消息处理管道&#xff08;message handler pi…