http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5376

题意:每天往n*m的棋盘上放一颗棋子,求多少天能将棋盘的每行每列都至少有一颗棋子的期望

分析: 我们来分析一波; 讲解一下弱弱的我的解题思路

(1)首先可以想到的是设一个 dp[val]  表示 当前用了val 个旗子距离目标状态还有几天的概率。但是我们可以发现单纯的一个状态val 是不能表示出准确的状态 , 比如说现在只是知道了我使用了多少的旗子,当前不知道有多少行和列是有旗子的;

(2)所以我们改变dp为 dp[val][i][j]  表示 用了val个旗子,有i行和j列有旗子了,到目标状态还有几天的概率。注意我们设的是概率dp[val][i][j] 有一个状态是val天数了 , 所以3我们可以先把概率求出来,最后在计算期望

(3)状态转移:有四种状态

(1)加入一个是放在记录的行中与列中:dp[val+1][i][j] -> dp[val][i][j] *p1;

(2)加入一个是放在没有记录过的行中与记录过的列中: dp[val+1][i+1][j] -> dp[val][i][j]*p2;

(3)加入一个是放在记录过的行中与没有记录过的列中:dp[val+1][i][j+1]->dp[val][i][j]*p3;

(4)加入一个是放在没有记录的行中与没有记录过的列中:dp[val+1][i+1][j+1]->dp[val][i][j]*p4;

p1,p2,p3,p4求法可以观察下图:

图中红色部分可视为j行k列已经至少有一个棋子了

#include<bits/stdc++.h>
using namespace std;
double dp[][][];
int main() {
int t;
cin >> t;
int k=;
while(t--) {
int n,m;scanf("%d%d",&n,&m);
memset(dp,,sizeof(dp));
dp[][][]=;
for(int val= ; val<n*m ; val++) ///放其
{
for(int i= ; i<=n ; i++)
{
for(int j= ; j<=m ; j++)
{
if(dp[val][i][j]==) continue;
double p1,p2,p3,p4;
if( i<n ||j<m){
p1=(i*j-val)*1.0/(n*m-val);
dp[val+][i][j]+=dp[val][i][j]*p1;
}
p2=j*(n-i)*1.0/(n*m-val);
dp[val+][i+][j]+=dp[val][i][j]*p2;
p3=i*(m-j)*1.0/(n*m-val);
dp[val+][i][j+]+=dp[val][i][j]*p3;
p4=(n-i)*(m-j)*1.0/(n*m-val);
dp[val+][i+][j+]+=dp[val][i][j]*p4; }
}
}
double ans=;
for(int val= ; val<=n*m ; val++)
{
ans+=dp[val][n][m]*val;
//cout<<dp[val][n][m]<<endl;
}
printf("%.12f\n",ans); }
return ;
}

ZOJ 3822 ( 2014牡丹江区域赛D题) (概率dp)的更多相关文章

  1. zoj 3822 Domination(2014牡丹江区域赛D题) (概率dp)

    3799567 2014-10-14 10:13:59                                                                     Acce ...

  2. ACM学习历程——ZOJ 3822 Domination (2014牡丹江区域赛 D题)(概率,数学递推)

    Description Edward is the headmaster of Marjar University. He is enthusiastic about chess and often ...

  3. ACM学习历程——ZOJ 3829 Known Notation (2014牡丹江区域赛K题)(策略,栈)

    Description Do you know reverse Polish notation (RPN)? It is a known notation in the area of mathema ...

  4. zoj 3820(2014牡丹江现场赛B题)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5374 思路:题目的意思是求树上的两点,使得树上其余的点到其中一个点的 ...

  5. zoj 3827(2014牡丹江现场赛 I题 )

    套公式 Sample Input 33 bit25 25 50 //百分数7 nat1 2 4 8 16 32 3710 dit10 10 10 10 10 10 10 10 10 10Sample ...

  6. zoj 3819(2014牡丹江现场赛 A题 )

    题意:给出A班和B班的学生成绩,如果bob(A班的)在B班的话,两个班级的平均分都会涨.求bob成绩可能的最大,最小值. A班成绩平均值(不含BOB)>A班成绩平均值(含BOB) &&a ...

  7. The 2014 ACM-ICPC Asia Mudanjiang Regional Contest(2014牡丹江区域赛)

    The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 题目链接 没去现场.做的网络同步赛.感觉还能够,搞了6题 A:这是签到题,对于A堆除掉.假设没剩余 ...

  8. zoj 3822 Domination(2014牡丹江区域赛D称号)

    Domination Time Limit: 8 Seconds      Memory Limit: 131072 KB      Special Judge Edward is the headm ...

  9. ZOJ 3827 Information Entropy (2014牡丹江区域赛)

    题目链接:ZOJ 3827 Information Entropy 依据题目的公式算吧,那个极限是0 AC代码: #include <stdio.h> #include <strin ...

随机推荐

  1. JQ判断div是否隐藏

    1. $("#tanchuBg").css("display")   2. $("#tanchuBg").is(":visible ...

  2. Log4net使用(二)

    转:http://www.cnblogs.com/basilwang/archive/2006/06/09/421868.html Log4net同时按照日期和大小生成RollingFile和访问Sy ...

  3. web 前端2 html css一些小问题技巧

    html css一些小问题技巧 1 对于儿子块float后,父亲块如果没内容就不见了,如何让父亲块依然跟随飘起了的儿子块撑起来呢?? 用到的属性after方法  公共方法作为继承即可. 1.1  方法 ...

  4. mysql字符串拆分实现split功能

    转自:https://blog.csdn.net/pjymyself/article/details/81668157有分隔符的字符串拆分题目要求数据库中 num字段值为: 实现的效果:需要将一行数据 ...

  5. win10系统Docker和VMware WorkStation共存,远程工具连接Docker

    摘要:win10安装docker进行学习的两种途径: Docker for Windows Installer.exe(地址https://download.docker.com/win/stable ...

  6. [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块)

    [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块) 题面 给定N, M,求\(1\leq x\leq N, 1\leq y\leq M\)且gcd(x, y)为质数的(x, y)有多少对. ...

  7. A*(A_star)搜索总结

    \(A^*(A star)\)搜索总结 标签:算法--搜索 阅读体验:https://zybuluo.com/Junlier/note/1299772 定义 先复制一则定义 \(A^*\)算法在人工智 ...

  8. sweetalert插件替代alert/confirm

    更多关于SweetAlert的内容请参考:https://github.com/t4t5/sweetalert.

  9. Untiy3D学习笔记记录

    一,原点和中心点 pivot(原点):位置移动的点(模型的原点不会发生变化) center(中心点):计算模型的中心,会发现变化(比如有两个cube,他的中心点会计算在两个模型的中间) 二,prefa ...

  10. 第一个progressive web application,发车!

    progressive web application是谷歌推出的一种渐进式web应用,通过利用service-worker等来达到类似于原生应用,而且在chrome浏览器还可以添加到主页,完全就和一 ...