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

                                                                               D. Painting The Wall

User ainta decided to paint a wall. The wall consists of n2 tiles, that are arranged in an n × n table. Some tiles are painted, and the others are not. As he wants to paint it beautifully, he will follow the rules below.

  1. Firstly user ainta looks at the wall. If there is at least one painted cell on each row and at least one painted cell on each column, he stops coloring. Otherwise, he goes to step 2.
  2. User ainta choose any tile on the wall with uniform probability.
  3. If the tile he has chosen is not painted, he paints the tile. Otherwise, he ignores it.
  4. Then he takes a rest for one minute even if he doesn't paint the tile. And then ainta goes to step 1.
 

However ainta is worried if it would take too much time to finish this work. So he wants to calculate the expected time needed to paint the wall by the method above. Help him find the expected time. You can assume that choosing and painting any tile consumes no time at all.

Input

The first line contains two integers n and m (1 ≤ n ≤ 2·103; 0 ≤ m ≤ min(n2, 2·104)) — the size of the wall and the number of painted cells.

Next m lines goes, each contains two integers ri and ci (1 ≤ ri, ci ≤ n) — the position of the painted cell. It is guaranteed that the positions are all distinct. Consider the rows of the table are numbered from 1 to n. Consider the columns of the table are numbered from1 to n.

Output

In a single line print the expected time to paint the wall in minutes. Your answer will be considered correct if it has at most 10 - 4 absolute or relative error.

Sample test(s)
input
5 2
2 3
4 1
output
11.7669491886
input
2 2
1 1
1 2
output
2.0000000000
input
1 1
1 1
output
0.0000000000

题意:有一个n*n的墙,现在小明来刷墙,如果每一行每一列都至少有一个格子刷过了就停止工作,否则每次随机选一个格子,如果刷过了就不刷如果没刷过就刷,然后休息一分钟,求停止工作时时间的数学期望(开始之前已经有m个格子刷过了)
题解:dp[i][j]表示还有i行j列未刷
初始化: dp[i][0]=((n-i)/n)*dp[i][0]+dp[i-1][0]*i/n+1;
dp[0][j]=((n-j)/n)*dp[0][j]+dp[0][j-1]*j/n+1;
转移: dp[i][j]=dp[i][j]*(n-i)(n-j)/n^2+dp[i-1][j]*(i*(n-j))/n^2+dp[i][j-1]*((n-i)*j)/n^2+dp[i-1][j-1]*(i*j)/n^2+1;

#include<iostream>
#include<cstdio>
using namespace std;
double dp[2010][2010];
int n,m,a[2010],b[2010];
int main()
{cin>>n>>m;int x,y;int l=n,r=n;for(int i=0; i<m; i++){cin>>x>>y;if(!a[x]) l--;if(!b[y]) r--;a[x]=1,b[y]=1;}for(int i=1; i<=n; i++) dp[i][0]=dp[i-1][0]+(double)n/i;for(int j=1; j<=n; j++) dp[0][j]=dp[0][j-1]+(double)n/j;for(int i=1; i<=n; i++){for(int j=1; j<=n; j++){dp[i][j]=(dp[i-1][j]*i*(n-j)+n*n+dp[i][j-1]*j*(n-i)+dp[i-1][j-1]*i*j)/(n*n-(n-i)*(n-j));}}printf("%0.10f\n",dp[l][r]);return 0;
}
代码

 

转载于:https://www.cnblogs.com/zxhl/p/4846283.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ahp层次分析法_基于层次分析法(AHP)的店铺选址应用研究

导读在连锁行业&#xff0c;店铺选址是其中很重要的一个方面。影响店铺选址的指标(因素)很多&#xff0c;决策中经常需要对店铺影响各指标进行量化分析。本文应用层级分析法(AHP)&#xff0c;对影响店铺选址的指标(因素)权重进行量化分析&#xff0c;以帮助决策者从备选的多个店…

python批量删缩进_鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频?...

鬼畜小姐姐野狼disco&#xff0c;十分钟教你如何用Python剪辑一个牛逼的抖音小视频&#xff1f;前言半个月前&#xff0c;后台有个小伙伴问我&#xff0c;如何将视频中的音频提取出来&#xff0c;并且将声音转成文字写入到 word 中&#xff0c;正好接下来的文章要用到百度的语音…

数据结构:点之间的最短距离--Floyd算法

Floyd算法 Floyd算法 Dijkstra算法是用于解决单源最短路径问题的&#xff0c;Floyd算法则是解决点对之间最短路径问题的。Floyd算法的设计策略是动态规划&#xff0c;而Dijkstra採取的是贪心策略。当然&#xff0c;贪心算法就是动态规划的特例。 算法思想 点对之间的最短路径仅…

shell 获取家目录_一篇教会你写90%的shell脚本

shell是外壳的意思&#xff0c;就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统&#xff0c;比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说&#xff0c;Shell是一个命令解释器&#xff0c;它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行…

数据结构c语言版第四章题库,数据结构(C语言版)(第4版)习题

数据结构(C语言版)(第4版)习题 习题 11.1 选择题。(1)计算机识别、存储和加工处理的对象统称为 。A&#xff0e;数据 B.数据元素 C.数据结构 D.数据类型(2)数据结构通常是研究数据的 及它们之间的联系。A&#xff0e;存储和逻辑结构 B.存储和抽象 C.理想和抽象 D.理想和逻辑(3)…

C++刷称号——2707: 素数与要素

Description 从键盘输入的随机整数n&#xff0c;如果n不是质数&#xff0c;然后计算n所有的因素&#xff08;不含1&#xff09;。例如&#xff0c;对于16&#xff0c;出口2,4,8&#xff1b;否则输出“It is a prime number.” 推断素数和需求因素已完成功能。 Input 随机整数n …

python opencv输出mp4_Python玩转视频处理(四):视频按场景进行分割

在上一篇文章&#xff08;python在手&#xff0c;女神视频轻松有&#xff09;分享了用AI人脸识别技术标记人物出现时间点来截取视频片段的教程&#xff0c;它的局限性在于只能通过识别特定的对象&#xff08;比如人脸&#xff09;来操作。在本文中将分享一个按场景进行分割视频…

stm32 isp下载官方软件android_OpenCanvas免费版下载_OpenCanvas绘图软件官方版下载7.0.25...

OpenCanvas 是一款小巧的CG手绘软件&#xff0c;让用户在使用数位板在电脑上绘图时&#xff0c;就像是在纸上手绘一样&#xff0c;可以画出极为细致的图像。OpenCanvas功能简捷、体积小巧、运行速度快&#xff0c;大家可以很快上手&#xff0c;非常适合入门级手绘爱好者使用。对…

【转】图文详解YUV420数据格式

YUV格式有两大类&#xff1a;planar和packed。 对于planar的YUV格式&#xff0c;先连续存储所有像素点的Y&#xff0c;紧接着存储所有像素点的U&#xff0c;随后是所有像素点的V。对于packed的YUV格式&#xff0c;每个像素点的Y,U,V是连续交*存储的。 YUV&#xff0c;分为三个分…

python安装pip_在MAC下安装pip,并关联到相应的python版本

在MAC下安装pip&#xff0c;并关联到相应的python版本 博客说明 文章所涉及的资料来自互联网整理和个人总结&#xff0c;意在于个人学习和经验汇总&#xff0c;如有什么地方侵权&#xff0c;请联系本人删除&#xff0c;谢谢&#xff01; 说明 不多说了&#xff0c;说就是电脑重…

cat命令详解_好程序员Python培训之详解eval好与坏

好程序员Python培训之详解eval好与坏&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;下面我们一起来看一下吧。eval是Python的一个内置函数&#xff0c;这个函数的作用是&#xff0c;返回传入字符串的表达式的…

对代理商的评价怎么写_简历中的自我评价怎么写才能更吸引人?

有统计报告显示&#xff1a;HR每天看到的职位简历至少1000&#xff0c;每封简历的停留时间不过10秒。在这么短的时间内&#xff0c;让hr印象深刻&#xff0c;自我评价的价值就出现啦&#xff01;不少人认为自我评价要幽默风趣&#xff0c;例如&#xff1a;“您都看到这儿了&…

sdk是什么_人脸识别在美颜SDK中存在什么意义?

在得益于短视频、直播平台的飞速发展下&#xff0c;美颜SDK也得到了很大的发展&#xff0c;变得越来越受欢迎。美颜SDK现在已经融入到我们的生活&#xff0c;是社交中必不可少的工具。现在人们对于美颜的要求越来越高&#xff0c;这就意味着美颜SDK的质量也要越来越好。而人脸识…

socket工具android,Android通过socket长连接实现推送

工具&#xff1a;Android studio软件方法及协议&#xff1a;socket、protobuf实现原理&#xff1a;通过本地建立一个socket&#xff0c;绑定服务器IP和port&#xff0c;然后connect&#xff0c;再开启另外线程定时心跳(注意这里的心跳不是自定义发送数据&#xff0c;而是采用so…

一行代码为UITextField添加收键盘功能

iOS开发中收键盘是十分常用的功能&#xff0c;只需一行代码即可为ViewController添加工具条收键盘功能 更重要的是使用catogory&#xff0c;无代码污染。 代码 // UITextFieldkeyboard.h // TextFieldKeyBord // // Created by luo.h on 15/10/8. // Copyright © 2015…

excel一列求和_【excel每日提升】Excel周日不排班!

【新朋友】点击标题下面蓝色字“王俊东“关注。 【老朋友】点击右上角&#xff0c;转发或分享本页面内容。excel系列课程excel特效系列课程&#xff01;第1节&#xff1a;Excel有公式的单元格标记颜色&#xff0c;很简单&#xff01;第2节&#xff1a;Excel删除空行&#xff0…

android 减速动画,Android View Animation

概述可译为视图动画&#xff0c;分为缩放动画平移动画渐变动画旋转动画Android系统中定义了一个抽象类Animation来定义这种视图动画&#xff0c;它的具体子类如下表&#xff1a;动画名称对应的子类xml中标签描述缩放动画ScaleAnimation< scale />S平移动画TranslateAnima…

excel排名_Excel案例:比赛中,如何实时显示排名

其实今天的重点&#xff0c;是要借这个常规比赛记分与公布的案例&#xff0c;介绍一下数组函数&#xff01;今天的案例&#xff0c;最关键的地方只用了一次数组函数就搞定了&#xff01;------分-----割-----线-----下面进入案例&#xff1a;常见的比赛&#xff0c;有很评委一起…

node 存储过程_用Node.js操作跨平台数据库Firebird

FireBirdFirebird是一个跨平台的关系数据库系统&#xff0c;目前能够运行在Windows、linux和各种Unix操作系统上&#xff0c;提供了大部分SQL-99标准的功能。它既能作为多用户环境下的数据库服务器运行&#xff0c;也提供嵌入式数据库的实现。Firebird脱胎于Borland公司的开源版…

鸿蒙是内核名字,华为徐直军:鸿蒙只是内核的名字,是媒体给误解成操作系统...

集微网消息(文/Jimmy)&#xff0c;华为轮值董事徐直军表示鸿蒙操作系统名字是媒体取得&#xff0c;华为并没打算取这个名字。他解释称&#xff0c;本来鸿蒙这个是用于华为内部一个内核的名字&#xff0c;只是挂在市场监管总局那里注册了。然后不知道哪个媒体好朋友看到了这个&a…