Problem Description
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestproblem/cid/1845/pid/3345
优先队列的用法:
#include <bits/stdc++.h>
using namespace std;
int main()
{
char s[200];
int a[200];
while(cin>>s){
priority_queue<int,vector<int>,greater<int> > q;
memset(a,0,sizeof(a));
int len=strlen(s);
int la=len*8;
for(int i=0;i<len;i++){
a[s[i]]++;
}
for(int i=0;i<200;i++){
if(a[i]) q.push(a[i]);
}
int ans=0,lh=0,x1,x2;
while(!q.empty()){
x1=q.top();
q.pop();
if(!q.empty()){
x2=q.top();
q.pop();
ans=x1+x2;
q.push(ans);
lh+=ans;
}
}
cout<<la<<' '<<lh<<' '<<setprecision(2)<<la*1.0/lh<<endl;
}
return 0;
}