题目大意: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. Spring Richclient — 企业级富客户端开发框架介绍,第 1 部分

    Spring Richclient — 企业级富客户端开发框架介绍,第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-spring-richc ...

  2. Sqlserver数据库存储路径的修改

    Sqlserver数据库存储路径的修改 Sqlserver数据库存储路径问题:本系统sqlserver路径默认是存储在C盘目录下的,由于数据会慢慢变大和避免重装系统数据丢失等问题,最好手动将路径设置在 ...

  3. Date and Time in PeopleCode

    Setting a Date to Null in PeopleCode To set a date to null in PeopleCode either use the SetDefault() ...

  4. R语言的日期运算

    写hive SQL查询, 需要从导入的参数, 自动累加日期. 从而实现一个自动的,多个日期的统计过程 R语言的日期运算超级简单. > test<-Sys.Date() > test ...

  5. Python2安装说明

    1.Python版本 Python 2.x的版本的,被称为Python2:是目前用的最广泛的,比如Python 2.7.12. Python 3.x的版本的,被称为Python3:是最新的版本的,比如 ...

  6. Python-Day12 Python mysql and ORM

    一.Mysql数据库 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,    每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据 ...

  7. Python学习教程(learning Python)--2.2 Python下的变量基础

    变量的基本概念,变量可以这样去理解,变量是一个值,这个值存储在计算机的内存里.以 网购为例,您在选购傻商品的时候,是在不同页面里选不同的商品,选好一件点击“放入购物车”,选完了再点击去结帐,这些商品的 ...

  8. spring debug

    DispatcherServlet{ getHandler()}handlerMappings{ RequestMappingHandlerMapping BeanNameUrlHandlerMapp ...

  9. Microsoft Visual Studio 语言切换

    事情的起因是需要安装本地的中文帮助,OS以及Viusal Studio都安装的英语版本. 其实需要安装的安装Viusal Studio的中文语言包即可. 通过工具选项可以达到以下的对话框 可以通过下载 ...

  10. Resource is out of sync with the file system

    Resource is out of sync with the file system解决办法: 在eclipse或mycelipse中,启动run on server时或查看项目文件时报错:Res ...