[概率dp] ZOJ 3822 Domination
题意:
给N×M的棋盘。每天随机找一个没放过棋子的格子放一个棋子
问使得每一个每列都有棋子的天数期望
思路:
dp[i][j][k] 代表放了i个棋子占了j行k列 到达目标状态的期望
然后从 dp[n*m][n][m] 往后递推就好了。
由于知道了有i个棋子 比如一个状态dp[6][3][3]
x x x o o o
x o o o o o
x o x o o o
o o o o o o
对于 dp[i+1][3][3] 事实上就是3*3剩下的空再放一个,概率就是(j*k-i) / (n*m-i)
对于 dp[i+1][4][3] 就是剩下的行乘上现有的列找一个放,概率就是 ((n-j)*k)/(n*m-i)
对于 dp[i+1][3][4]就是剩下的列乘上现有的行找一个放 。概率就是 ((m-k)*j)/(n*m-i)
最后 dp[i+1][4][4] 就是剩下的行乘上剩下的列找一个放 ,概率就是(n-j)*(m-k))/(n*m-i)
然后期望是一天加上就好了。
注意一下几个非法的情况就好了
然后能够用滚动数组优化空间。
代码:
#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"queue"
#include"algorithm"
#include"iostream"
#include"map"
#include"string"
using namespace std;
double dp[2][55][55];
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
int i,j,k;
memset(dp,0,sizeof(dp));
for(i=n*m;i>=0;i--)
{
for(j=n;j>=0;j--)
{
for(k=m;k>=0;k--)
{
if(j==n&&k==m) continue; //终于状态 期望是0
if(i>j*k) continue; //棋子多了 非法
double tep=0; //以下的注意不能等于0
if(j>0&&k>0) tep+=(dp[1-(i+1)%2][j][k]+1)*((j*k-i)/(n*m-i*1.0));
if(k>0) tep+=(dp[1-(i+1)%2][j+1][k]+1)*(((n-j)*k)/(n*m-i*1.0));
if(j>0) tep+=(dp[1-(i+1)%2][j][k+1]+1)*(((m-k)*j)/(n*m-i*1.0));
tep+=(dp[1-(i+1)%2][j+1][k+1]+1)*((n-j)*(m-k))/(n*m-i*1.0);
dp[1-(i)%2][j][k]=tep;
}
}
}
printf("%.12f\n",dp[1-(0)%2][0][0]);
}
return 0;
}
[概率dp] ZOJ 3822 Domination的更多相关文章
- zoj 3822 Domination(dp)
题目链接:zoj 3822 Domination 题目大意:给定一个N∗M的棋盘,每次任选一个位置放置一枚棋子,直到每行每列上都至少有一枚棋子,问放置棋子个数的期望. 解题思路:大白书上概率那一张有一 ...
- ZOJ 3822 Domination 概率dp 难度:0
Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Judge Edward is the headm ...
- zoj 3822 Domination 概率dp 2014牡丹江站D题
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的空棋盘 每一次在上面选择一个空的位置放置一枚 ...
- ZOJ 3822 Domination(概率dp 牡丹江现场赛)
题目链接:problemId=5376">http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5376 Edward ...
- zoj 3822 Domination(2014牡丹江区域赛D称号)
Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Judge Edward is the headm ...
- ZOJ 3822 Domination (三维概率DP)
E - Domination Time Limit:8000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu Submi ...
- zoj 3822 Domination(2014牡丹江区域赛D题) (概率dp)
3799567 2014-10-14 10:13:59 Acce ...
- ZOJ 3822 Domination(概率dp)
一个n行m列的棋盘,每天可以放一个棋子,问要使得棋盘的每行每列都至少有一个棋子 需要的放棋子天数的期望. dp[i][j][k]表示用了k天棋子共能占领棋盘的i行j列的概率. 他的放置策略是,每放一次 ...
随机推荐
- JAVA GUI学习 - JOptionPane对话框组件学习
/** * 对话框 - 学习笔记 * @author Wfei * */ public class JoptionPaneKnow extends JFrame { public JoptionPan ...
- hdoj 3018 Ant Trip(无向图欧拉路||一笔画+并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018 思路分析:题目可以看做一笔画问题,求最少画多少笔可以把所有的边画一次并且只画一次: 首先可以求出 ...
- uva 10651 - Pebble Solitaire(记忆化搜索)
题目链接:10651 - Pebble Solitaire 题目大意:给出一个12格的棋盘,‘o'代表摆放棋子,’-‘代表没有棋子, 当满足’-oo'时, 最右边的棋子可以跳到最左边的位子,而中间的棋 ...
- 开发板-PC机(宿主机)-虚拟机(VM)之间网络通信设置方法及须要注意的问题
1.不使用路由器交换机 硬件连接: 使用网线将开发板和PC机相连 串口线将PC机和开发板相连 使用命令: ifconfig -a 串口控制端查看开发板的网络配置 route -n 串口控制端查看开发板 ...
- Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)
此文来记录学习笔记: 今天继续说Ext.Array,Ext.Function,Ext.Date,Ext.Error ------------------------------------------ ...
- js和jQuery写简单下拉菜单
1.jQuery写法 <head> <meta http-equiv="Content-Type" content="text/html; charse ...
- fork 函数的一点学习
昨天某位少年问了我一个问题,#include<stdio.h> int main() { fork(); fork(); fork(); printf("hello " ...
- 转:requirejs2.0新特性介绍
就在前天晚上RequireJS发布了一个大版本,直接从version1.0.8升级到了2.0.随后的几小时James Burke又迅速的将版本调整为2.0.1,当然其配套的打包压缩工具r.js也同时升 ...
- 转: 如何实现jQuery的Ajax文件上传
[PHP文件上传] 在开始之前,我觉得是有必要把通WEB上传文件的原理简单说一下的.实际上,在这里不管是PHP,JSP,还是ASP处理上传的文件,其实都是WEB早已把文件上传到服务器了,我们只是运用上 ...
- qt 操作word
//修改doc QString filepath="e:\\aa.doc"; QAxWidget *word = new QAxWidget("Word.Applicat ...