zoukankan      html  css  js  c++  java
  • 【bzoj2969】矩形粉刷 期望

    题目描述

    为了庆祝新的一年到来,小M决定要粉刷一个大木板。大木板实际上是一个W*H的方阵。小M得到了一个神奇的工具,这个工具只需要指定方阵中两个格子,就可以把这两格子为对角的,平行于木板边界的一个子矩形全部刷好。小M乐坏了,于是开始胡乱地使用这个工具。
    假设小M每次选的两个格子都是完全随机的(方阵中每个格子被选中的概率是相等的),而且小M使用了K次工具,求木板上被小M粉刷过的格子个数的期望值是多少。

    输入

    第一行是整数K,W,H

    输出

    一行,为答案,四舍五入保留到整数。

    样例输入

    1 3 3

    样例输出

    4


    题解

    期望

    由于期望具有可加性,因此可以计算出每个格子被染色的概率,加起来即为答案。

    那么一个格子被染色的概率即为$1-(每次都不被染色的概率)^k$。

    考虑单次染色没有没染的情况:选定的两个点都在左边、上边、右边、下边,但是会发现四个角的部分会计算两次,因此还需要减掉两个点都在左上、左下、右上、右下的情况。然后求幂加起来即可。

    #include <cmath>
    #include <cstdio>
    inline double squ(double x)
    {
    	return x * x;
    }
    int main()
    {
    	int k , n , m , i , j;
    	double ans = 0;
    	scanf("%d%d%d" , &k , &n , &m);
    	for(i = 1 ; i <= n ; i ++ )
    		for(j = 1 ; j <= m ; j ++ )
    			ans += 1 - pow((squ((i - 1) * m) + squ((j - 1) * n) + squ((n - i) * m) + squ((m - j) * n)
    				          - squ((i - 1) * (j - 1)) - squ((i - 1) * (m - j)) - squ((n - i) * (j - 1)) - squ((n - i) * (m - j))) / squ(n * m) , k);
    	printf("%.0lf
    " , ans);
    	return 0;
    }
  • 相关阅读:
    git 从远程仓库指定分支克隆代码到本地
    vue路由懒加载
    ES6中拓展运算符 ...
    Mysql 安装-windows X64
    mysql-Federated存储方式,远程表,相当于sql server的linked server
    优化临时表使用,SQL语句性能提升100倍
    MySQL行锁深入研究
    mysql 队列 实现并发读
    mysql 常用sql
    mysql分表的3种方法
  • 原文地址:https://www.cnblogs.com/GXZlegend/p/7559781.html
Copyright © 2011-2022 走看看