您的位置:首页 > 运维架构

hdu1053 Entropy

2015-11-30 19:56 295 查看
#include <cstdio>

#include <iostream>

#include <algorithm>

#include <queue>

#include <cstring>

using namespace std;

int a[30];

char s[1005];

struct node

{

int w;

friend bool operator < (node aa, node bb)

{

return aa.w > bb.w;

}

};

int main()

{

while(~scanf("%s", s))

{

if(!strcmp(s, "END")) break;

int len = strlen(s);

memset(a, 0, sizeof(a));

for(int i = 0; i < len; i++)

{

if(s[i] == '_') a[0] ++;

else a[s[i] - 'A' + 1] ++;

}

priority_queue <node> q;

for(int i = 0; i < 27; i++)

{

node b;

b.w = a[i];

if(a[i]) q.push(b);

}

int res;

if(q.size() == 1) res = len;

else

{

res = 0;

while(q.size() > 1)

{

int aa = q.top().w; q.pop();

int bb = q.top().w; q.pop();

res += (aa + bb);

node b;

b.w = aa + bb;

q.push(b);

}

}

printf("%d %d %.1lf\n", len*8, res, len*8.0/res);

}

return 0;

}

心得:啥也不说了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: