ZOJ 3822 Domination【概率DP】
2017-06-26 15:28
323 查看
题目链接
题意:有个n*m的棋盘,每次在其中随机选一个位置放一个棋子,问期望次数是多少次之后,棋盘上的每行每列至少都要有一个棋子。
令dp[i][j][k]表示放了k个棋子后有i行和j列上至少有一个棋子的概率(注意不是1到i行和1到j列),每次放一个新的棋子对原来状态的影响只有四种可能:1. 没有影响。2. 多出新的一行满足要求。3. 多出新的一列满足要求。4. 多出新的一行一列满足要求。
状态转移方程分别是:
1. dp[i][j][k] += dp[i - 1][j][k - 1] * (n - i + 1) * j / (n * m - k + 1)
2. dp[i][j][k] += dp[i][j - 1][k - 1] * (m - j + 1) * i / (n * m - k + 1)
3. dp[i][j][k] += dp[i - 1][j - 1][k - 1] * (n - i + 1) * (m - j + 1) / (n * m - k + 1)
4. dp[i][j][k] += dp[i][j][k - 1] * (i * j - k + 1) / (n * m - k + 1)
求出的是放了k个棋子之后满足要求的概率,而最后求的是数学期望,也就是说要满足放k个棋子之后正好满足要求的概率。因此要减去k-1的概率。
题意:有个n*m的棋盘,每次在其中随机选一个位置放一个棋子,问期望次数是多少次之后,棋盘上的每行每列至少都要有一个棋子。
令dp[i][j][k]表示放了k个棋子后有i行和j列上至少有一个棋子的概率(注意不是1到i行和1到j列),每次放一个新的棋子对原来状态的影响只有四种可能:1. 没有影响。2. 多出新的一行满足要求。3. 多出新的一列满足要求。4. 多出新的一行一列满足要求。
状态转移方程分别是:
1. dp[i][j][k] += dp[i - 1][j][k - 1] * (n - i + 1) * j / (n * m - k + 1)
2. dp[i][j][k] += dp[i][j - 1][k - 1] * (m - j + 1) * i / (n * m - k + 1)
3. dp[i][j][k] += dp[i - 1][j - 1][k - 1] * (n - i + 1) * (m - j + 1) / (n * m - k + 1)
4. dp[i][j][k] += dp[i][j][k - 1] * (i * j - k + 1) / (n * m - k + 1)
求出的是放了k个棋子之后满足要求的概率,而最后求的是数学期望,也就是说要满足放k个棋子之后正好满足要求的概率。因此要减去k-1的概率。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int T; int n, m; double dp[55][55][55 * 55]; int main() { scanf("%d", &T); while (T--) { scanf("%d %d", &n, &m); memset(dp, 0, sizeof(dp)); dp[0][0][0] = 1; double ans = 0; for (int k = 1; k <= n * m; k++) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { dp[i][j][k] += dp[i - 1][j][k - 1] * (n - i + 1) * j / (n * m - k + 1); dp[i][j][k] += dp[i][j - 1][k - 1] * (m - j + 1) * i / (n * m - k + 1); dp[i][j][k] += dp[i - 1][j - 1][k - 1] * (n - i + 1) * (m - j + 1) / (n * m - k + 1); dp[i][j][k] += dp[i][j][k - 1] * (i * j - k + 1) / (n * m - k + 1); } } } for (int k = 1; k <= n * m; k++) { // cout << dp [m][k] << endl; ans += k * (dp [m][k] - dp [m][k - 1]); } printf("%.12f\n", ans); } return 0; }
相关文章推荐
- ZOJ - 3822 Domination (概率DP)
- zoj 3822 Domination 概率dp 2014牡丹江站D题
- ZOJ 3822 Domination 概率DP
- ZOJ 3822 Domination [概率DP]
- ZOJ - 3822 Domination(概率dp)
- zoj 3822 Domination 【概率DP 求期望】
- [概率dp] ZOJ 3822 Domination
- ZOJ 3822 Domination(概率dp)
- -----概率DP ZOJ 3822- Domination
- ZOJ 3822 Domination(概率dp)
- ZOJ-3822-Domination【概率dp】【2014牡丹江赛区】
- ZOJ 3822 Domination(概率DP)
- 概率DP ZOJ 3822 Domination
- ZOJ 3822 Domination 概率DP 2014年ACM_ICPC亚洲区域赛牡丹江现场赛D题
- ZOJ 3822 Domination(概率dp)
- [zoj 3822]2014牡丹江区域赛 Domination 概率dp求期望
- ZOJ 3822 Domination【概率dp】
- ZOJ 3822 Domination 概率DP入门
- ZOJ 3822 Domination(概率dp 牡丹江现场赛)
- ZOJ 3822 Domination 概率DP求期望