ZOJ 3822 Domination
来源:互联网 发布:淘宝上的手办是真假 编辑:程序博客网 时间:2024/06/06 23:18
题意:
一个棋盘如果每行每列都有棋子那么这个棋盘达到目标状态 现在随机放棋子 问达到目标状态的期望步数
思路:
用概率来做 计算第k步达到目标状态的概率 进而求期望 概率计算方法就是dp dp[k][i][j]表示第k步有i行被覆盖j列被覆盖 转移只有4种 —— 同时覆盖行列 覆盖行 覆盖列 不覆盖 状态数50^4 很简单
代码:
#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<map>#include<set>#include<vector>#include<queue>#include<cstdlib>#include<ctime>#include<cmath>using namespace std;typedef long long LL;#define N 55int t, n, m;double dp[N * N][N][N], ans;int main() {int i, j, k;scanf("%d", &t);while (t--) {memset(dp, 0, sizeof(dp));dp[0][0][0] = 1;ans = 0;scanf("%d%d", &n, &m);for (k = 1; k <= n * m; k++) {for (i = 0; i <= n; i++) {for (j = 0; j <= m; j++) {if (i == n && j == m)break;int f00 = i * j - k + 1;int f01 = i * (m - j);int f10 = (n - i) * j;int f11 = (n - i) * (m - j);int sum = n * m - k + 1;dp[k][i][j] += dp[k - 1][i][j] * f00 / sum;dp[k][i + 1][j] += dp[k - 1][i][j] * f10 / sum;dp[k][i][j + 1] += dp[k - 1][i][j] * f01 / sum;dp[k][i + 1][j + 1] += dp[k - 1][i][j] * f11 / sum;}}ans += dp[k][n][m] * k;}printf("%.10f\n", ans);}return 0;}
0 0
- zoj 3822 Domination(dp)
- zoj 3822 Domination
- ZOJ 3822 Domination
- ZOJ 3822 Domination
- ZOJ 3822 Domination(DP)
- ZOJ 3822 Domination
- ZOJ 3822 Domination
- zoj 3822 Domination
- ZOJ 3822 Domination
- ZOJ 3822 Domination
- [概率dp] zoj 3822 Domination
- ZOJ 3822 Domination(概率dp)
- ZOJ - 3822 Domination (DP)
- [概率dp] ZOJ 3822 Domination
- ZOJ 3822 Domination(概率dp)
- ZOJ 3822 Domination 概率DP
- zoj 3822 Domination 概率dp
- zoj 3822 Domination (概率DP)
- [mysql]ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.
- MySQL体系结构
- 【微软100题】逆置链表
- MAC Intellij IDEA 常用快捷键(本人亲自测试过)
- 深圳联强私人订制淘宝托管公司好不好
- ZOJ 3822 Domination
- free()与release区别
- 一个MVC4 下的验证码用法
- 2014年工作中遇到的20个问题:21-40
- android工程中各种文件介绍
- 深拷贝与浅拷贝
- Largest Rectangle in Histogram
- 使用curl库进行http通信
- KaLi Linux更改系统界面及语言