ZOJ 3826 Hierarchical Notation(2014 牡丹江 D,概率DP)
2014-10-12 21:56
477 查看
DominationTime Limit: 8 Seconds Memory Limit: 131072 KB Special JudgeEdward 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 withN rows andM columns.Every day after work, Edward will place a chess piece on a random empty cell. A few days later, he found the chessboard wasdominated 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 ofN ×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题目大意:有一个N*M的棋盘,每次随机的在一个没有落棋子的点落一个棋子。然后求每一行每一列都最少有一颗棋子的期望步数。解题思路:定义dp[k][i][j]表示已经走了k步,并且i行j列的格子都有了棋子。那么剩余可以落子的位置有n*m-k个。那么一共会有4种情况:(1)落在一个行列都没有棋子的位置 那么dp[k+1][i+1][j+1]+=dp[k][i][j]*(m-j)*(n-i)/(n*m-k);//就是那n-i行m-j列的位置可以落子(2)落在一个行有棋子,列没棋子的位置, 那么dp[k+1][i][j+1]+=dp[k][i][j]*((m-j)*i)/(n*m-k);//就是m-j列 n行。(3)落在一个列有棋子,行没棋子的位置, 那么dp[k+1][i+1][j]+=dp[k][i][j]*((n-i)*j)/(m*n-k);//同上(4)落在行列都有棋子的位置 那么这种转移的条件就是i*j>k 并且i != n并且 j != m(因为那样是不能落子的)所以dp[k+1][i][j]+=dp[k][i][j]*(i*j-k)/(m*n-k);
<pre name="code" class="cpp">#include<cstdio>#include<cmath>#include<cstring>#define eps 1e-12double dp[2510][55][55];int main(){ int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d %d",&n,&m); memset(dp,0,sizeof(dp)); dp[0][0][0]=1; double ans=0; for(int k=0;k<=n*m;k++) { for(int i=0;i<=n;i++) for(int j=0;j<=m;j++) { if(i*j>k&&(i!=n||j!=m)) dp[k+1][i][j]+=dp[k][i][j]*(i*j-k)/(double)(m*n-k); dp[k+1][i+1][j+1]+=dp[k][i][j]*(m-j)*(n-i)/(double)(n*m-k); dp[k+1][i+1][j]+=dp[k][i][j]*((n-i)*j)/(double)(m*n-k); dp[k+1][i][j+1]+=dp[k][i][j]*((m-j)*i)/(double)(n*m-k); } ans+=dp[k][m]*k; } printf("%.12lf\n",ans); } return 0;}
相关文章推荐
- ZOJ 3826 Hierarchical Notation(2014 牡丹江 H,字符串模拟)
- ZOJ 3826 Hierarchical Notation(2014 牡丹江 B,树的直径+二分)
- ZOJ 3822 Domination The 2014 ACM-ICPC 牡丹江区域赛 概率dp 先算概率,再转成期望
- [zoj 3822]2014牡丹江区域赛 Domination 概率dp求期望
- ZOJ 3826 Hierarchical Notation(2014 Asia Mudanjiang Regional Contest)
- ZOJ 3826 Hierarchical Notation(Mudanjiang 2014)(JSON解析模拟)
- 2014牡丹江现场赛A题D题I题(水,概率Dp,水)ZOJ 3819,3822,3827
- zoj 3822 Domination(2014牡丹江区域赛D题) (概率dp)
- ZOJ-3822-Domination【概率dp】【2014牡丹江赛区】
- [2014 Regional]牡丹江 H Hierarchical Notation 做题记录
- ZOJ3822 ACM-ICPC 2014 亚洲区域赛牡丹江赛区现场赛D题Domination 概率DP
- ZOJ 3829 Known Notation / 2014牡丹江区域赛 K (模拟, 贪心)
- zoj 3826 Hierarchical Notation(模拟)
- ZOJ 3824 Fiber-optic Network 树形dp 2014牡丹江现场赛F
- ZOJ 3822 Domination 概率DP 2014年ACM_ICPC亚洲区域赛牡丹江现场赛D题
- ZOJ 3812 We Need Medicine(dp,状态压缩,2014牡丹江网络赛D题)
- ZOJ 3826 Hierarchical Notation
- ZOJ 3826 Hierarchical Notation(模拟-字符串处理)
- ZOJ3822 ACM-ICPC 2014 亚洲区域赛牡丹江赛区现场赛D题Domination 概率DP(两种解法)
- zoj 3822 Domination 概率dp 2014牡丹江站D题