其他分享
首页 > 其他分享> > Vjudge 20220421练习10 B Joyful HDU - 5245

Vjudge 20220421练习10 B Joyful HDU - 5245

作者:互联网

written on 2022-04-22

题目描述:

有一个含有M*N个格子的矩形,每次随机两个点(x1,y1)(x2,y2),把这两个点构成的子矩阵内的格子都染色。随机染K次,求最后被染色格子的期望个数。

期望题,拿到题目后,因为是求被染色的格子的期望个数,那么这个期望显然就是每个格子被染色的概率乘以 \(1\) 然后对其求和

那么对于每一个格子进行分析,因为有 \(K\) 次染色操作,根据分步计数原理,每次被染色概率相乘就是总概率。然后又因为被染色概率不太好求,所以先求单次不被染色的概率,用一减便是了

单次不被染色的概率:对于点 \((i,j)\),分四块进行考虑,减掉重复的就是满足条件的情况数,比上总方案数就是概率了

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m,k;
int main()
{
	int T;
	scanf("%d",&T);
	for(int rnd=1;rnd<=T;rnd++)
	{
		scanf("%d%d%d",&n,&m,&k);
		ll all=1ll*n*n*m*m;
		double ans=0;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				ll t1=1ll*(i-1)*(i-1)*m*m+1ll*(j-1)*(j-1)*n*n+1ll*(n-i)*(n-i)*m*m+1ll*(m-j)*(m-j)*n*n;
				ll t2=1ll*(i-1)*(i-1)*(j-1)*(j-1)+1ll*(i-1)*(i-1)*(m-j)*(m-j)+1ll*(j-1)*(j-1)*(n-i)*(n-i)+1ll*(n-i)*(n-i)*(m-j)*(m-j);
				ans+=1-pow((t1-t2)*1.0/all,k);
			}
		}
		printf("Case #%d: %.0lf\n",rnd,ans);//
	}
}

其实是一道简单题,同类题做的太少了,刚开始一直在用单次被染色几个分类考虑就直接想偏了

标签:10,HDU,概率,期望,格子,5245,染色,int,单次
来源: https://www.cnblogs.com/Freshair-qprt/p/16537684.html