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

The 2014 ACM-ICPC Asia Mudanjiang Regional Contest - I.Information Entropy

2014-10-12 13:52 302 查看
题目大意:求解题目的第二个公式。

解题思路:直接求解第二个公式,只需注意下为0的时候,值为0即可,详见code。

题目来源:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5359

code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;

const int eps = 1e-9;
const int MAXN = 100+10;
const int M = 5;
int t,n,d;
double p[MAXN];
char str[M];

int main(){
//freopen("input.txt","r",stdin);
scanf("%d",&t);
while(t--){
double ans=0;
scanf("%d %s",&n,str);
for(int i=0;i<n;++i){
scanf("%d",&d);
p[i]=d*1.0/100;
}
if(str[0]=='b'){
for(int i=0;i<n;++i){
if(p[i]==0) continue;
ans-=p[i]*log2l(p[i]+eps);
}
}
if(str[0]=='n'){
for(int i=0;i<n;++i){
if(p[i]==0) continue;
ans-=p[i]*logl(p[i]+eps);
}
}
if(str[0]=='d'){
for(int i=0;i<n;++i){
if(p[i]==0) continue;
ans-=p[i]*log10l(p[i]+eps);
}
}
printf("%.11f\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐