题目大意:一个$n\times n$的棋盘,其中有$m$个格子已经被染色,执行一次染色操作(无论选择的格子是否已被染色)消耗一个单位时间,染色时选中每个格子的概率均等,求使每一行、每一列都存在被染色的格子的期望用时。


传送门

显然,被染色的砖的位置对解题是没有影响的,我们可以将已染色砖所在的行和列移动到右下角,问题就转化到了在更小棋盘中的新问题。

在任一时刻,棋盘内的状态如下:

其中绿色区域为当前问题的棋盘,选中对行和列都有贡献;

选中黄色对行或列有贡献;

选中红色没有贡献;

设$f[i][j]$表示剩余$i$行$j$列未染色,则$$f[i][j]=\frac {i\times j\times f[i-1][j-1]+i\times (n-j)\times f[i-1][j]+(n-i)\times j\times f[i][j-1]+(n-i)\times (n-j)\times f[i][j]} {n^2}$$

两边都有$f[i][j]$,化简得:$$f[i][j]=\frac {n^2+i\times j\times f[i-1][j-1]+i\times (n-j)\times f[i-1][j]+(n-i)\times j\times f[i][j-1]} {n^2-(n-i)\times (n-j)}$$


代码:

 #include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define foru(i,x,y) for(int i=x;i<=y;i++)
using namespace std;
typedef double db;
const int N=;
db f[N][N];
int br[N],bc[N],n,m,x,y,r,c;
int main(){
scanf("%d%d",&n,&m);
r=c=n;
foru(i,,m){
scanf("%d%d",&x,&y);
if(!br[x])br[x]=,r--;
if(!bc[y])bc[y]=,c--;
}
f[][]=;
foru(i,,n){
f[i][]=f[i-][]+(db)n/i;
f[][i]=f[][i-]+(db)n/i;
}
foru(i,,r)
foru(j,,c){
f[i][j]=(db)n*n+(i*j*f[i-][j-]+i*(n-j)*f[i-][j]+(n-i)*j*f[i][j-]);
f[i][j]/=(n*n-(n-i)*(n-j));
}
printf("%.10lf\n",f[r][c]);
}

[Codefoeces398B]Painting The Wall(概率DP)的更多相关文章

  1. Codeforces Round #233 (Div. 2)D. Painting The Wall 概率DP

                                                                                   D. Painting The Wall ...

  2. Painting The Wall 期望DP Codeforces 398_B

    B. Painting The Wall time limit per test 1 second memory limit per test 256 megabytes input standard ...

  3. CF398B Painting The Wall 概率期望

    题意:有一个 $n * n$ 的网格,其中 $m$ 个格子上涂了色.每次随机选择一个格子涂色,允许重复涂,求让网格每一行每一列都至少有一个格子涂了色的操作次数期望.题解:,,这种一般都要倒推才行.设$ ...

  4. Codeforces 28C [概率DP]

    /* 大连热身D题 题意: 有n个人,m个浴室每个浴室有ai个喷头,每个人等概率得选择一个浴室. 每个浴室的人都在喷头前边排队,而且每个浴室内保证大家都尽可能均匀得在喷头后边排队. 求所有浴室中最长队 ...

  5. HDU 4405 Aeroplane chess (概率DP)

    题意:你从0开始,要跳到 n 这个位置,如果当前位置是一个飞行点,那么可以跳过去,要不然就只能掷骰子,问你要掷的次数数学期望,到达或者超过n. 析:概率DP,dp[i] 表示从 i  这个位置到达 n ...

  6. POJ 2096 Collecting Bugs (概率DP)

    题意:给定 n 类bug,和 s 个子系统,每天可以找出一个bug,求找出 n 类型的bug,并且 s 个都至少有一个的期望是多少. 析:应该是一个很简单的概率DP,dp[i][j] 表示已经从 j ...

  7. POJ 2151 Check the difficulty of problems (概率DP)

    题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 ,求每队至少解出一题且冠军队至少解出N道题的概率. 析:概率DP,dp[i][j][k] 表示第 i 个队伍,前 j 个题,解出 ...

  8. 概率DP light oj 1030

    t组数据 n块黄金 到这里就捡起来 出发点1 到n结束  点+位置>n 重掷一次 dp[i] 代表到这里的概率 dp[i]=(dp[i-1]+dp[i-2]... )/6  如果满6个的话 否则 ...

  9. hdu 4050 2011北京赛区网络赛K 概率dp ***

    题目:给出1-n连续的方格,从0开始,每一个格子有4个状态,左右脚交替,向右跳,而且每一步的步长必须在给定的区间之内.当跳出n个格子或者没有格子可以跳的时候就结束了,求出游戏的期望步数 0:表示不能到 ...

随机推荐

  1. 根据M3U8地址下载视频

     下面展示的是通过M3U8地址,把这个地址转为一个视频文件:只是一个基本案例,当然,有些下载的M3U8文件里面格式是不一样的,还有的是加过密的,道理都是一个道理. import java.io.Buf ...

  2. java AES加解密

    AES加解密工具类 package com.yan.demo; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64D ...

  3. 【Pytyon模块】logging模块-日志处理

    一.日志相关概念 1.日志的作用 通过log的分析,可以方便用户了解系统或软件.应用的运行情况:如果你的应用log足够丰富,也可以分析以往用户的操作行为.类型喜好.地域分布或其他更多信息:如果一个应用 ...

  4. 2.react 基础 - create-react-app 目录结构 及 组件应用

    1. react-app 脚手架的 目录结构 node_modules -d 存放 第三方下载的 依赖的包 public -d    资源目录 favicon.ico - 左上角的图标 index.h ...

  5. 系统学习python第二天学习笔记

    1.对day01所学内容的练习 """ 评分规则: A >=90 B >=80 C >=70 D 其他 用户输入成绩,根据成绩的不同显示不同的级别. & ...

  6. 课程报名 | 5G时代的视频云服务关键技术与实践

    6月3日,工业和信息化部宣布将于近期发放5G商用牌照.这也意味着,中国正式进入了5G时代. 5G身上有很多新标签:"大规模天线"."新的编码技术"." ...

  7. HDU-4460 Friend Chains(BFS&权为1所有最短路的最大值)

    题目: For a group of people, there is an idea that everyone is equals to or less than 6 steps away fro ...

  8. P3810 【模板】三维偏序(陌上花开)(CDQ分治)

    题目背景 这是一道模板题 可以使用bitset,CDQ分治,K-DTree等方式解决. 题目描述 有 nn 个元素,第 ii 个元素有 a_iai​.b_ibi​.c_ici​ 三个属性,设 f(i) ...

  9. PAT Advanced 1056 Mice and Rice (25) [queue的⽤法]

    题目 Mice and Rice is the name of a programming contest in which each programmer must write a piece of ...

  10. UML-领域模型-添加关联和属性

    1.何谓关联? 关联(association):一个类的全局变量引用了另一个类,就表示关联了这个类 2.何时使用关联? 长时间(需要记住)留存的需要关联:短时间的不需要.比如: 需要关联:老师教那些课 ...