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

来源:互联网 发布:面板数据和删失数据 编辑:程序博客网 时间:2024/05/16 15:51

         题目大意:求解题目的第二个公式。

        解题思路:直接求解第二个公式,只需注意下为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;}

0 0
原创粉丝点击