Sakura has a very magical tool to paint walls. One day, kAc asked Sakura to paint a wall that looks like an M×NM×N matrix. The wall has M×NM×N squares in all. In the whole problem we denotes (x,y)(x,y) to be the square at the xx-th row, yy-th column. Once Sakura has determined two squares (x1,y1)(x1,y1) and (x2,y2)(x2,y2), she can use the magical tool to paint all the squares in the sub-matrix which has the given two squares as corners.

However, Sakura is a very naughty girl, so she just randomly uses the tool for KKtimes. More specifically, each time for Sakura to use that tool, she just randomly picks two squares from all the M×NM×N squares, with equal probability. Now, kAc wants to know the expected number of squares that will be painted eventually.

InputThe first line contains an integer TT(T≤100T≤100), denoting the number of test cases.

For each test case, there is only one line, with three integers M,NM,N and KK. 
It is guaranteed that 1≤M,N≤5001≤M,N≤500, 1≤K≤201≤K≤20. 
OutputFor each test case, output ''Case #t:'' to represent the tt-th case, and then output the expected number of squares that will be painted. Round to integers.Sample Input

2
3 3 1
4 4 2

Sample Output

Case #1: 4
Case #2: 8

Hint

The precise answer in the first test case is about 3.56790123.

题意:

给出一个M*N的矩阵,从其中任意的选两个格子,将以两个格子为对角的矩形染色。这样的操作重复k次,问会被涂色的格子数的期望值。

分析:

期望值说白了就是执行完上述操作后,计算最有可能涂了多少个格子。

看了网上的题解才明白,我们只需要计算每一个格子可能被选中的概率,

期望值E(x)=x1*p1 + x2*p2 + .....  + xn*pn;

在这里我们把每1个格子看做独立事件,所以这里的x1=x2=.....=xn=1,

所以对于本题,期望值 E(x)=p1 + p2 + .....  + pn;

解题:

现在问题就简化成了求 每一个格子 被选中的概率,再累加即可。

先看一张图:

假设现在我们求5这个点被涂色的概率,怎样可以让他染上色呢?

选点(x1,y1)和 (x2,y2)构成的矩形包含5这个点即可。

在矩阵中选两个点的总情况数 是 m*n * m*n

那么选点有9种情况:

1、若(x1,y1)在区域1,则(x2,y2)可以在区域5、6、8、9

2、若(x1,y1)在区域3,则(x2,y2)可以在区域4、5、7、8

3、若(x1,y1)在区域7,则(x2,y2)可以在区域2、3、5、6

4、若(x1,y1)在区域9,则(x2,y2)可以在区域1、2、4、5

5、若(x1,y1)在区域2,则(x2,y2)可以在区域4、5、6、7、8、9

6、若(x1,y1)在区域4,则(x2,y2)可以在区域2、3、5、6、8、9

7、若(x1,y1)在区域6,则(x2,y2)可以在区域1、2、4、5、7、8

8、若(x1,y1)在区域8,则(x2,y2)可以在区域1、2、3、4、5、6

9、若(x1,y1)在区域5,则(x2,y2)可以在任意区域

当前这个点被染色的概率就是这9种情况之概率和。
---------------------

参考博客:https://blog.csdn.net/winter2121/article/details/71082686

#include <map>
#include <set>
#include <stack>
#include <cmath>
#include <queue>
#include <cstdio>
#include <vector>
#include <string>
#include <bitset>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <algorithm>
#define ls (r<<1)
#define rs (r<<1|1)
#define debug(a) cout << #a << " " << a << endl
using namespace std;
typedef long long ll;
const ll maxn = 1e3+10;
const ll mod = 1e9+7;
const double pi = acos(-1.0);
const double eps = 1e-8;
int main() {
ll T, k;
double n, m;
scanf("%lld",&T);
for( ll cas = 1; cas <= T; cas ++ ) {
scanf("%lf %lf %lld",&m,&n,&k);
double sum = n*m*n*m, ans = 0; //sum:所有的情况种数,ans:期望值
for( ll i = 1; i <= m; i ++ ) {
for( ll j = 1; j <= n; j ++ ) { //对每一个点算贡献值
double p = 0; //点(i,j)被选中的情况数
        //另外一个点在区域1,3,5,7
p += (i-1)*(j-1)*(m-i+1)*(n-j+1);
p += (i-1)*(n-j)*(m-i+1)*j;
p += (m-i)*(j-1)*i*(n-j+1);
p += (m-i)*(n-j)*i*j;
        //另外一个点在区域2,4,6,8 
p += (i-1)*1*(m-i+1)*n;
p += 1*(j-1)*m*(n-j+1);
p += 1*(n-j)*m*j;
p += (m-i)*1*i*n;
        //另外一个点在区域5
p += m*n;
        //点(i,j)被选中的概率
p = (p*1.0)/sum;
ans += 1-pow(1-p,k);
}
}
printf("Case #%lld: %.0f\n",cas,ans);
}
return 0;
}

  

  

Joyful HDU - 5245 概率问题的更多相关文章

  1. J - Joyful HDU - 5245 (概率)

    题目链接: J - Joyful  HDU - 5245 题目大意:给你一个n*m的矩阵,然后你有k次涂色机会,然后每一次可以选定当前矩阵的一个子矩阵染色,问你这k次用完之后颜色个数的期望. 具体思路 ...

  2. HDU - 5245 概率

    JoyfulHDU - 5245 题目大意:有N*M个正方形,进行k次涂色,每次会随机的选两个正方形作为一个矩形区域的顶点,然后把这个区域内的涂色,最后问k次之后,预计被涂了色的正方形有几个(也就是数 ...

  3. HDU 5985 概率

    n种硬币各有cnt[i]枚,每轮下其有p[i]概率保留,问各种硬币只有它存活到最后一轮的概率. 设k轮后i硬币存活概率$a[i][k]=(1-p^k_i)^{cnt[i]}$ 则最后只有第i种硬币存活 ...

  4. HDU 5245 Joyful(概率题求期望)

    D - Joyful Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit S ...

  5. HDU 5245 Joyful(期望)

    http://acm.hdu.edu.cn/showproblem.php?pid=5245 题意: 给出一个n*m的矩阵格子,现在有k次操作,每次操作随机选择两个格子作为矩形的对角,然后将这范围内的 ...

  6. hdu 5245 Joyful(期望的计算,好题)

    Problem Description Sakura has a very magical tool to paint walls. One day, kAc asked Sakura to pain ...

  7. HDU 5245 Joyful (期望)

    题意:进行K次染色,每次染色会随机选取一个以(x1,y1),(x2,y2)为一组对角的子矩阵进行染色,求K次染色后染色面积的期望值(四舍五入). 析:我们可以先求出每个格子的期望,然后再加起来即可.我 ...

  8. HDU 5245 上海大都会 J题 (概率期望)

    这道题的概率可以单独考虑每个格子对期望的贡献值.因为其实每个格子是否被选都可以认为是独立的,单独一个格子贡献的期望为1*(该格子K次被选的概率),所以答案其实就是每个格子K次被选中的概率之和. #in ...

  9. hdu 1203 概率+01背包

    I NEED A OFFER! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Sub ...

随机推荐

  1. SSD+HDD 安装ubuntu16.04+win7双系统

    本人电脑是联想天逸100  前段时间把光驱拆了加了一个128G的SSD 顺便把SSD装上了win7  机械硬盘500G放资料和一般软件之类的   后来想要用到ubuntu  就在官网下载ubuntu1 ...

  2. ASP.NET Core on K8S深入学习(2)部署过程解析与Dashboard

    上一篇<K8S集群部署>中搭建好了一个最小化的K8S集群,这一篇我们来部署一个ASP.NET Core WebAPI项目来介绍一下整个部署过程的运行机制,然后部署一下Dashboard,完 ...

  3. JDK的命令行工具系列 (二) javap、jinfo、jmap

    javap: 反编译工具, 可用来查看java编译器生成的字节码 参数摘要: -help 帮助 -l 输出行和变量的表 -public 只输出public方法和域 -protected 只输出publ ...

  4. 在docker中开启新的container

    当你在启动某个容器类型的时候  如果产生了类似的错误: docker: Error: No such image: b27f5dfcfc70c16d7b135889460def6b3f831bcc72 ...

  5. Postgresql部署及简单操作

    PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS),在开源数据库使用上与MySQL各领风骚.但也有不少人质疑postgresql的未来,正所谓,赞扬或批判一种数据库都必须先 ...

  6. java学习-NIO(四)Selector

    这一节我们将探索选择器(selectors).选择器提供选择执行已经就绪的任务的能力,这使得多元 I/O 成为可能.就像在第一章中描述的那样,就绪选择和多元执行使得单线程能够有效率地同时管理多个 I/ ...

  7. Linux启动之旅

    引言 某出租房内,某台电脑的电源键被按下,于是开启了一段Linux启动之旅... BIOS 系统启动,首先进入BIOS. ● BIOS 为 Base Input/Output System(基本输入输 ...

  8. js网页倒计时功能(天,时,分,秒)

    给定任何一个时间,然后实现现在到那个时间的倒计时. 下面的例子是显示现在到2019年8月1号0时0分的倒计时: <div class="list"> <span ...

  9. 8.14 day32 TCP服务端并发 GIL解释器锁 python多线程是否有用 死锁与递归锁 信号量event事件线程q

    TCP服务端支持并发 解决方式:开多线程 服务端 基础版 import socket """ 服务端 1.要有固定的IP和PORT 2.24小时不间断提供服务 3.能够支 ...

  10. ansible之数据提取与Juniper实例演示

    一.Ansible列表两种表达方式 基于YAML的列表 my_list: - a - b - c - d 基于Json格式的列表 {"my_list":[ "a" ...