ZOJ 3822 Domination 概率DP
来源:互联网 发布:淘宝夏季情侣装 编辑:程序博客网 时间:2024/05/22 15:56
概率DP
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
21 32 2
Sample Output
3.0000000000002.666666666667
Author: JIANG, Kai
Source: The 2014 ACM-ICPC Asia Mudanjiang Regional Contest
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const double eps = 1e-8;int n,m;double ans;double dp[3000][60][60];int main(){ int T_T; scanf("%d",&T_T); while(T_T--) { scanf("%d%d",&n,&m); ans=0.0; memset(dp,0,sizeof(dp)); dp[1][1][1]=1.; for(int num=1;num<n*m;num++) { for(int r=0;r<=n;r++) { for(int c=0;c<=m;c++) if(r*c>=num) { if(r==n&&c==m) continue; int one = r*c-num; int two = c*n-r*c; int three = r*m-r*c; int four = n*m - r*m - c*n + r*c; int all = n*m - num; dp[num+1][r][c]+=dp[num][r][c]*(one*1./all); dp[num+1][r+1][c]+=dp[num][r][c]*(two*1./all); dp[num+1][r][c+1]+=dp[num][r][c]*(three*1./all); dp[num+1][r+1][c+1]+=dp[num][r][c]*(four*1./all); } } } for(int i=1;i<=n*m;i++) ans+=dp[i][n][m]*i; printf("%.10lf\n",ans); } return 0;}
- [概率dp] zoj 3822 Domination
- ZOJ 3822 Domination(概率dp)
- [概率dp] ZOJ 3822 Domination
- ZOJ 3822 Domination(概率dp)
- ZOJ 3822 Domination 概率DP
- zoj 3822 Domination 概率dp
- zoj 3822 Domination (概率DP)
- ZOJ - 3822 Domination(概率dp)
- ZOJ 3822 Domination 概率DP
- zoj 3822 Domination 概率dp
- ZOJ 3822 Domination [概率DP]
- zoj 3822 Domination 概率DP
- ZOJ 3822Domination(概率DP)
- ZOJ 3822 Domination(概率DP)
- ZOJ 3822 Domination【概率DP】
- ZOJ 3822 Domination【概率dp】
- -----概率DP ZOJ 3822- Domination
- ZOJ 3822 Domination (概率DP)
- 67 俩个闲玩娱乐。 1.扑克牌的顺子
- 用JAVA写一个关于英寸和厘米之间的换算
- 复合类型
- Memcached 基础知识
- Java 字符串方法举例
- ZOJ 3822 Domination 概率DP
- This关键字细节
- 67 2.n个骰子的点数。
- 找工作--笔试面试--准备8
- bombing:cocos2d-x内存管理机制-侧重调用
- CodeForces-228A-Is your horseshoe on the other hoof?
- 基于C++的灰度值方图处理
- [LeetCode]Merge Intervals
- 【OJ】Lake Counting (Poj 2386 // hzu.acmclub.com 11448)