题目大意:ainta刷一面n*n的二维墙。墙一开始可能有一些块被刷了。
他终止刷墙的前提是墙的每一行每一列都至少有一块被刷。
他每一次从n*n的墙随机选择一块,如果这一块没有被刷就刷,刷了就无视,刷墙不计入时间,刷完一块之后要休息一分钟(不管无视了没有都要休息)。
他想求期望终止时间是多少。(中国好队友z55250825友情翻译)

n<=2000,m<=n^2

首先我们压缩一下状态,因为这个状态有很多重复的,我们需要记下的只有有多少行被占领了,所以我们记F[i][j]表示还有i行没有占领,还有j列没有占领从这个状态到终止状态的期望时间。

递推方程也比较容易想,状态[i][j]能够到达的状态是[i][j],[i-1][j],[i][j-1],[i-1][j-1],概率也容易算

F[i][j]=

化简一下就是

F[i][j]=

然后注意一下边界情况

#include <cstdio>
using namespace std; int n,m,l,r;
bool a[],b[];
double f[][]; int main() {
scanf("%d%d",&n,&m);
l=n;r=n;
int i,j,x,y;
for(i=;i<=m;++i){
scanf("%d%d",&x,&y);
if(!a[x])--l;
if(!b[y])--r;
a[x]=true;
b[y]=true;
}
for(i=;i<=l;++i)f[i][]=(n+i*f[i-][])/i;
for(j=;j<=r;++j)f[][j]=(n+j*f[][j-])/j;
for(i=;i<=l;++i)
for(j=;j<=r;++j)
f[i][j]=(n*n+i*(n-j)*f[i-][j]+(n-i)*j*f[i][j-]+i*j*f[i-][j-])/(n*n-(n-i)*(n-j));
printf("%0.8lf\n",f[l][r]);
//printf("%d %d\n",l,r);
return ;
}

codeforces399D的更多相关文章

随机推荐

  1. PHP字符串拼接与MySQL语句

    这个部分总是钻牛角尖.总是出错. public function getList($pagesize=25){ $where = '1'; $tableName = $this->getTabl ...

  2. ThinkPHP实现联动菜单;

    联动菜单,首先给你看看前端是怎么写的:

  3. Lua 的函数库 01

    这里只介绍和插件编写比较有关的几个函数. 详细的Lua手册请参照Lua Reference Manual 5.1. table函数库 一部分的table函数只对其数组部分产生影响, 而另一部分则对整个 ...

  4. 【原】SBT构建Scala应用

    [转帖] 原文地址:https://github.com/CSUG/real_world_scala/blob/master/02_sbt.markdown 尊重版权,尊重他人劳动成果,转帖请注明原文 ...

  5. Delphi开发的IP地址修改工具

    用Delphi进行开发的,直接修改注册表,需重启电脑后才生效

  6. express中使用 connect-flash 及其源码研究

    刚开始摸node.js, 在用express 4.x 的过程中 有一个connect-flash的玩意 如上图, 在 /reg 页面提交注册信息的时候 如若两次输入的密码不匹配则调用请求对象req的f ...

  7. "Programming"和"Programming"是同一个"Programming"吗?

    什么意思? C语言没有专门的字符串类型,但是,它同样可以处理字符串.本文不是讨论字符串的使用,而是讨论C字符串之间的关系.如题,在C语言代码中,如果定义#define STR = "Prog ...

  8. 启动FM预算基金管理模块后,0L总账消失的解决办法

    只要用SE38运行一下:FMGL_CHANGE_APPL_IN_LEDGER 问题就解决了.

  9. C#操作FTP, FTPHelper和SFTPHelper

    1. FTPHelper using System; using System.Collections.Generic; using System.IO; using System.Net; usin ...

  10. ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)

    ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需 要将相应的ValidationAttr ...