ZOJ 3822 Domination(概率dp 牡丹江现场赛)
题目链接: problemId=5376">http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5376
Edward is the headmaster of Marjar University. He is enthusiastic about chess and often plays chess with his friends. What's more, he bought a large decorative chessboard with N rows
 and M columns.
Every day after work, Edward will place a chess piece on a random empty cell. A few days later, he found the chessboard was dominated by the chess pieces. That means there is
 at least one chess piece in every row. Also, there is at least one chess piece in every column.
"That's interesting!" Edward said. He wants to know the expectation number of days to make an empty chessboard of N × M dominated. Please write a program to help
 him.
Input
There are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case:
There are only two integers N and M (1 <= N, M <= 50).
Output
For each test case, output the expectation number of days.
Any solution with a relative or absolute error of at most 10-8 will be accepted.
Sample Input
2
1 3
2 2
Sample Output
3.000000000000
2.666666666667
Author: JIANG, Kai
PS:
附上bin神的概率dp总结 Orz;
http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html
代码例如以下:(学习:http://blog.csdn.net/napoleon_acm/article/details/40020297)
//dp[i][j][k] 表示当前用了<=k个chess ,覆盖了i行j列(i*j的格子 每行至少一个。每列至少一个)的概率。
//
//dp[i][j][k] 由 dp[i][j][k-1] , dp[i-1][j][k-1], dp[i][j-1][k-1], dp[i-1][j-1][k-1]得到,
//分别表示 1、加入的新的一个chess, 2、不覆盖新的行列, 3、仅仅新覆盖一行。 仅仅新覆盖一列。
//4、同一时候新覆盖一行和一列,得到dp[i][j][k]。
//递推时。 每一个概率 * (能够覆盖的点数/剩余全部的空点数) 相加得到[i][j][k].
//ans += (dp[n][m][i] - dp[n][m][i-1])* i。 (i = [1, n*m])
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 57;
double dp[maxn][maxn][maxn*maxn];
int main()
{
int n, m;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
memset(dp,0,sizeof(dp));
dp[0][0][0] = 1.0;
for(int i = 1; i <= n; i++)
{
for(int j =1; j <= m; j++)
{
for(int k = 1; k <= n*m; k++)
{
dp[i][j][k] = dp[i][j-1][k-1]*((1.0*i*(m-j+1))/(n*m-k+1))
+dp[i-1][j][k-1]*((1.0*(n-i+1)*j)/(n*m-k+1))
+dp[i-1][j-1][k-1]*((1.0*(n-i+1)*(m-j+1))/(n*m-k+1))
+dp[i][j][k-1]*((1.0*(i*j-k+1))/(n*m-k+1));
}
}
}
double ans = 0;
for(int i = 1; i <= n*m; i++)
{
ans+=(dp[n][m][i]-dp[n][m][i-1])*i;
}
printf("%.12lf\n",ans);
}
return 0;
}
ZOJ 3822 Domination(概率dp 牡丹江现场赛)的更多相关文章
- zoj 3822 Domination 概率dp 2014牡丹江站D题
		
Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Judge Edward is the headm ...
 - zoj 3822 Domination(2014牡丹江区域赛D称号)
		
Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Judge Edward is the headm ...
 - ZOJ 3822 Domination 概率dp 难度:0
		
Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Judge Edward is the headm ...
 - zoj 3822 Domination (概率dp 天数期望)
		
题目链接 参考博客:http://blog.csdn.net/napoleon_acm/article/details/40020297 题意:给定n*m的空棋盘 每一次在上面选择一个空的位置放置一枚 ...
 - ACM学习历程——ZOJ 3822 Domination (2014牡丹江区域赛 D题)(概率,数学递推)
		
Description Edward is the headmaster of Marjar University. He is enthusiastic about chess and often ...
 - ZOJ 3822 Domination(概率dp)
		
一个n行m列的棋盘,每天可以放一个棋子,问要使得棋盘的每行每列都至少有一个棋子 需要的放棋子天数的期望. dp[i][j][k]表示用了k天棋子共能占领棋盘的i行j列的概率. 他的放置策略是,每放一次 ...
 - zoj 3822(概率dp)
		
ZOJ Problem Set - 3822 Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Ju ...
 - ZOJ 3822 Domination 期望dp
		
Domination Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem ...
 - zoj 3822 Domination (可能性DP)
		
Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Judge Edward is the headm ...
 
随机推荐
- An example usage of an encryption algorithm (AES, in this case) is:
			
pycrypto 2.6.1 : Python Package Index An example usage of an encryption algorithm (AES, in this case ...
 - 怎样取消shutdown关机命令?-shutdown命令的使用解析
			
机房上课,可恶电脑总是被管理员測试,不时地弹出这个关机提示.怎样取消这个关机命令呢?其有用 shutdown -a 就可以.以下来学习一下shutdown命令的使用: shutdown这个命令预计 ...
 - 关于时间,日期,星期,月份的算法(Java中Calendar的用法)(一)
			
package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class Ca ...
 - HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))
			
Pet Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...
 - Handler和HandlerThread
			
1.什么是Handler? SDK中关于Handler的说明例如以下: A Handler allows you to sendand process Messageand Runnable obje ...
 - Swift - 文本标签(UILabel)的用法
			
1,标签的创建 1 2 3 4 5 6 7 8 9 10 import UIKit class ViewController: UIViewController { override func ...
 - Android studio ElasticDownloadView
			
找到个开源项目,地址:https://github.com/Tibolte/ElasticDownload 下载进度效果: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...
 - 代码静态分析工具PC-LINT安装配置
			
代码静态分析工具PC-LINT安装配置--step by step 作者:ehui928 ...
 - ACE的构建(VC++6.0环境)
			
ACE的构建(VC++6.0环境)Windows下ACE的构建1. 将ACE-5.5.zip解压到所需的安装目录,此处以E:/为例,解压后形成ACE_wrappers文件夹,因此ACE将会存在于ACE ...
 - 调用一个系统命令,并读取它的输出值(使用QProcess.readAll)
			
下面我们再看一个更复杂的例子,调用一个系统命令,这里我使用的是 Windows,因此需要调用 dir:如果你是在 Linux 进行编译,就需要改成 ls 了. mainwindow.h #ifndef ...