每天在一个n*m的棋盘上放棋子,问使得每一行,每一列都有棋子的期望天数

dp[n][m][k] 表示用k个棋子占据了n行,m列,距离目标状态还需要的期望天数

那么dp[n][m][k] = p1 * dp[n][m][k+1] + p2*dp[n+1][m][k+1] + p3*dp[n][m+1][k+1] + p4*dp[n+1][m+1][k+1] + 1

设s= n*m-k, 即剩下多少个地方可以放棋子

p1 = (i*j-k)/s, p1表示放置一棵棋子后,不增加行也不增加列的概率

p2 = (n-i)*j/s, p2表示放置一棵棋子后,只增加行的概率

p3 = (m-j)*i/s,  只增加列的概率

p4 = (n-j)*(m-j)/s , 即增加行又增加列的概率

模拟比赛的时候,第三维开小了,只报wa,不报re,这样的情况,发生好多次了

 #pragma warning(disable:4996)
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <vector>
#include <stack>
#include <map>
#include <set>
#include <string>
#include <functional>
using namespace std; /*
*/
double dp[][][];
int main()
{
int N, M, t;
scanf("%d", &t);
while (t--)
{
scanf("%d%d", &N, &M);
if (N == || M == )
{
printf("%.9lf\n", max(N, M)*1.0);
continue;
}
memset(dp, , sizeof(dp));
for (int i = N;i >= ; --i)
{
for (int j = M;j >= ; --j)
{
if (i == N && j == M) continue;
for (int k = i*j;k >= max(i, j); --k)
{
double s = N*M - k;
dp[i][j][k] = (i*j-k)*1.0/s *dp[i][j][k+]+(N - i)*j*1.0 / s *dp[i + ][j][k + ] + (M - j)*i*1.0 / s*dp[i][j + ][k + ] + (N - i)*(M - j)*1.0 / s*dp[i + ][j + ][k + ] + ;
//printf("%d %d %d \n", i, j, k);
} }
} printf("%.9lf\n", dp[][][]);
}
return ;
}

zoj3822 期望dp的更多相关文章

  1. 【BZOJ-1419】Red is good 概率期望DP

    1419: Red is good Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 660  Solved: 257[Submit][Status][Di ...

  2. [NOIP2016]换教室 D1 T3 Floyed+期望DP

    [NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...

  3. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  4. 【BZOJ-4008】亚瑟王 概率与期望 + DP

    4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special JudgeSubmit: 832  Solved: 5 ...

  5. 期望dp BZOJ3450+BZOJ4318

    BZOJ3450 概率期望DP f[i]表示到i的期望得分,g[i]表示到i的期望长度. 分三种情况转移: ① s[i]=‘x’:f[i]=f[i-1],g[i]=0 ② s[i]=‘o’:f[i]= ...

  6. HDU 4405 期望DP

    期望DP算是第一题吧...虽然巨水但把思路理理清楚总是好的.. 题意:在一个1×n的格子上掷色子,从0点出发,掷了多少前进几步,同时有些格点直接相连,即若a,b相连,当落到a点时直接飞向b点.求走到n ...

  7. POJ 2096 【期望DP】

    题意: 有n种选择,每种选择对应m种状态.每种选择发生的概率相等,每种选择中对应的每种状态发生的概率相等. 求n种选择和m种状态中每种至少发生一次的期望. 期望DP好别扭啊.要用倒推的方法. dp[i ...

  8. ZOJ 3822 Domination 期望dp

    Domination Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem ...

  9. poj 2096 Collecting Bugs(期望 dp 概率 推导 分类讨论)

    Description Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other ...

随机推荐

  1. XP下的进程静音技术(遍历进程,遍历输入模块,遍历输入函数,找到函数并HOOK) good

    很多浏览器有这种功能,实现原理都是一样.发声源基本都来自Flash,比如Flash游戏啦,视频播放器啦等等 而Flash的发声都是通过winmm.dll::waveOutWrite函数来完成,所以,我 ...

  2. tc3162目录

    lsbin      dev      lib      proc     tmp      usrboaroot  etc      linuxrc  sbin     userfs   var# ...

  3. 在Window和Linux下使用Zthread库

    ZThread库是一个开源的跨平台高级面向对象的线性和sycnchronization 库,以运行POSIX 和Win32 系统中的C++程序. ZThread库的主页:http://zthread. ...

  4. Servlet API中文版

    基本类和接口 一.javax.servlet.Servlet接口 servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理 ...

  5. java图形

    JFreeCharteclipse图形化编程插件jigloojfaceibm的jface基于swt,swing解决了awt存在的lcd问题.swing组件:container,window,frame ...

  6. Struts ActionForm简单理解

    要想明确struts的控制流程以及它核心API的实现原理(比方 Action/DispatchAction/ActionForm的实现原理),玩转struts1.2的关键就是可以玩转 ActionFo ...

  7. VSC调试.NET Core 应用程序

    VS Code 从零开始开发并调试.NET Core 应用程序 使用VS Code 从零开始开发并调试.NET Core 应用程序,C#调试. 上一篇 使用VS Code开发 调试.NET Core ...

  8. jQuery 顶部导航尾随滚动,固定浮动在顶部

    jQuery 顶部导航尾随滚动.固定浮动在顶部 演示 XML/HTML Code <section> <article class="left"> < ...

  9. 持续集成环境Jenkins的搭建和使用

    这几天试着搭了个持续集成环境,我使用的是Jenkins,它的前身是Hadson,由于被Oracle收购了,所以换个名字继续开源,这个有点像MySQL. 持续集成总是跟敏捷开发什么的搞在一起,显得非常高 ...

  10. Flexigrid的使用(整合Struts2)

    Flexigrid是一个jQuery表格插件 下载地址:http://download.csdn.net/detail/itmyhome/7613879 用法: 一.相关资源文件的引入 <lin ...