hdu 5245 2015 上海邀请赛(期望值 数学概率)
2017-04-29 23:27
726 查看
Joyful
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1267 Accepted Submission(s): 555
Problem Description
Sakura has a very magical tool to paint walls. One day, kAc asked Sakura to paint a wall that looks like an M×N matrix.
The wall has M×N squares
in all. In the whole problem we denotes (x,y) to
be the square at the x-th
row, y-th
column. Once Sakura has determined two squares (x1,y1) and (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 K times.
More specifically, each time for Sakura to use that tool, she just randomly picks two squares from all the M×N squares,
with equal probability. Now, kAc wants to know the expected number of squares that will be painted eventually.
Input
The first line contains an integer T(T≤100),
denoting the number of test cases.
For each test case, there is only one line, with three integers M,N and K.
It is guaranteed that 1≤M,N≤500, 1≤K≤20.
Output
For each test case, output ''Case #t:'' to represent the t-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
HintThe precise answer in the first test case is about 3.56790123.
这个题 着实 上头, 随机取 两个值, 求期望值 ,完蛋 求期望 公式不会了0- 0 期望值 高中题 ╮(╯▽╰)╭
公式不会 又不是很理解 caodan
看了网上大牛的解释, 好吧
思路:
1 两层for 循环扫描 每一个 每一个概率相等
2 求可以覆盖的区域
这个图 从大神那搞得, 以 5 为特例 求 覆盖5的 区域 根据分布原理 两个相乘
1. 第一个选择 1 区域 和则 第二个 右下 5-6-8-9 都可以
2 .第一个选择 9 区域 和则 第二个 左上 5-4-1-2 都可以
3. 第一个选择 7 区域 和则 第二个 右上 5-6-3-2 都可以
4 .第一个选择 3 区域 和则 第二个 左下 5-4-7-8都可以
5. 第一个选择 2 区域 和则 第二个 二三行 4-5-6-7-8-9 都可以
6 .第一个选择 4 区域 和则 第二个 二三列 2-5-8-9-6-3 都可以
7 .第一个选择 8 区域 和则 第二个 一二行 1-2-3-4-5-6 都可以
8. 第一个选择 6 区域 和 则 第二个 一二列 1-2-4-5-7-8都可以
9. 第一个选择 5 区域 则 第二个 任意个地方都可以 即 1-2-3-4-5-6-7-8-9
因此 我们 只需要 按照上面的思路 求覆盖 (x,y) 这个点 9步 就可以
p=n*m;// 他自己 周围 8个方向都可以 即m*n; p+=(i-1)*(j-1)*(n-i+1)*(m-j+1);// 1 5-6-8-9 p+=(i-1)*(m-j)*j*(n-i+1);// 3 4-5-7-8 p+=(j-1)*(n-i)*i*(m-j+1);// 7 2-3-5-6 p+=(n-i)*(m-j)*i*j;// 9 1-2-4-5 p+=(i-1)*m*(n-i+1);// 正上 2 4-5-6-7-8-9 p+=(m-j)*n*j;//正右 6 1-2-4-5-7-8 p+=(n-i)*m*i;// 正下 8 1-2-3-4-5-6 p+=(j-1)*n*(m-j+1);//正左 4 2-3-5-6-7-8
代码:
#include <iostream> #include <stdio.h> #include <cstring> #include <math.h> using namespace std; typedef long long ll; int main() { int T,i,j,k; double n,m;// n,m 要double 后面有p/(n*m*n*m) 防止误差 while(cin>>T) { int count=1; while(T--) { scanf("%lf %lf %d",&n,&m,&k); double p,ans=0; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { p=n*m;// 他自己 周围 8个方向都可以 即m*n; p+=(i-1)*(j-1)*(n-i+1)*(m-j+1);// 1 5-6-8-9 p+=(i-1)*(m-j)*j*(n-i+1);// 3 4-5-7-8 p+=(j-1)*(n-i)*i*(m-j+1);// 7 2-3-5-6 p+=(n-i)*(m-j)*i*j;// 9 1-2-4-5 p+=(i-1)*m*(n-i+1);// 正上 2 4-5-6-7-8-9 p+=(m-j)*n*j;//正右 6 1-2-4-5-7-8 p+=(n-i)*m*i;// 正下 8 1-2-3-4-5-6 p+=(j-1)*n*(m-j+1);//正左 4 2-3-5-6-7-8 p/=(n*n*m*m); ans+=1-(pow(1-p,k)); } } printf("Case #%d: %d\n",count++,int(ans+0.5)); } } return 0; }
相关文章推荐
- HDU 5245 Joyful(概率求期望)——2015年上海邀请赛
- acm杭电HDU5245 Joyful 概率问题 期望值(2015上海邀请赛)
- hdu 5245 joyful 2015acm上海大都会邀请赛
- 概率 数学期望 HDU - 5245
- HDU - 5237 Base64 2015上海邀请赛 (模拟)
- hdu 5237 2015上海邀请赛 B - Base64 (进制转化,模拟)
- HDU 5245 Joyful (2015年上海大都赛J题,概率)
- HDU 5242 GAME 2015上海邀请赛G题
- HDU 5245 Joyful (数学概率求期望)
- 借助树的概率dp(期望)+数学-好题-hdu-4035-Maze
- HDU5099——Comparison of Android versions(简单题)(2014上海邀请赛重现)
- 2014上海全国邀请赛1003(hdu 5092)
- HDU5092——Seam Carving(动态规划+回溯)(2014上海邀请赛重现)
- HDU5093——Battle ships(最大二分匹配)(2014上海邀请赛重现)
- hdu 5047 Sawtooth--2014acm上海赛区邀请赛(附java模板)
- HDU 5092 Seam Carving(上海邀请赛基础DP)
- 【HDU】2014上海全国邀请赛——题目重现(感谢上海大学提供题目) 题解
- [hdu 5051]2014上海网络赛 Fraction 数学 Benford's law/打表找规律
- HDU 5095 Linearization of the kernel functions in SVM (上海邀请赛水题)
- HDU 4254 A Famous Game (概率&组合数学公式)