首页 > 其他 > 详细

J - Joyful -数学期望

时间:2019-05-05 10:59:34      阅读:130      评论:0      收藏:0      [点我收藏+]

J - Joyful

 

 

题意:给你一个n*m的矩形,每次你可以其中挑选任意两个点作为一个矩形的对角,然后将矩形区域染色,现在告诉你要操作k次,求矩形中有多少个小方格被染色的期望值。

做法:线性期望?E(X+Y)=E(X)+E(Y),我们将问题转化为每个小方格被染色的期望值,然后累加就是总的期望值,对于求每个小方格被染色的期望值我们可以求它被染色的概率p,反向求它不被染色的概率会很容易,可知对于一个小方格总次数是m*m*n*n,不被染色的区域就是两个点都在小方格的上,下,左,右,然后对于四个角会多算一次,最后减一下。

注意事项!!!!:在写代码时,要时刻注意对于int计算时,避免溢出要先强转(long long),时刻注意int计算结果转化double时要在计算前加1.0*或1.0+使它先变成浮点数在运算。

#include<bits/stdc++.h>
using namespace std;
#define LL long long
int main()
{
    int t,n,m,k;
    scanf("%d",&t);
    for(int it=1; it<=t; it++)
    {
        scanf("%d%d%d",&n,&m,&k);
        LL sum=(LL)n*n*m*m;
        double ans=0;
        LL cnt=0;
        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++)
            {
                cnt=0;
                cnt+=(LL)(i-1)*(i-1)*m*m;
                cnt+=(LL)(n-i)*(n-i)*m*m;
                cnt+=(LL)(j-1)*(j-1)*n*n;
                cnt+=(LL)(m-j)*(m-j)*n*n;
                cnt-=(LL)(i-1)*(i-1)*(j-1)*(j-1);
                cnt-=(LL)(i-1)*(i-1)*(m-j)*(m-j);
                cnt-=(LL)(n-i)*(n-i)*(j-1)*(j-1);
                cnt-=(LL)(n-i)*(n-i)*(m-j)*(m-j);
                double temp=1.0*cnt/sum;
                ans+=1.0-pow(temp,k);
            }
//        printf("%lf\n",ans);
        printf("Case #%d: %d\n",it,(int)(ans+0.5));
    }

}

 

J - Joyful -数学期望

原文:https://www.cnblogs.com/dongdong25800/p/10811768.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!