ZOJ 3822 ( 2014牡丹江区域赛D题) (概率dp)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5376
题意:每天往n*m的棋盘上放一颗棋子,求多少天能将棋盘的每行每列都至少有一颗棋子的期望
分析: 我们来分析一波; 讲解一下弱弱的我的解题思路
(1)首先可以想到的是设一个 dp[val] 表示 当前用了val 个旗子距离目标状态还有几天的概率。但是我们可以发现单纯的一个状态val 是不能表示出准确的状态 , 比如说现在只是知道了我使用了多少的旗子,当前不知道有多少行和列是有旗子的;
(2)所以我们改变dp为 dp[val][i][j] 表示 用了val个旗子,有i行和j列有旗子了,到目标状态还有几天的概率。注意我们设的是概率dp[val][i][j] 有一个状态是val天数了 , 所以3我们可以先把概率求出来,最后在计算期望
(3)状态转移:有四种状态
(1)加入一个是放在记录的行中与列中:dp[val+1][i][j] -> dp[val][i][j] *p1;
(2)加入一个是放在没有记录过的行中与记录过的列中: dp[val+1][i+1][j] -> dp[val][i][j]*p2;
(3)加入一个是放在记录过的行中与没有记录过的列中:dp[val+1][i][j+1]->dp[val][i][j]*p3;
(4)加入一个是放在没有记录的行中与没有记录过的列中:dp[val+1][i+1][j+1]->dp[val][i][j]*p4;
p1,p2,p3,p4求法可以观察下图:
图中红色部分可视为j行k列已经至少有一个棋子了
#include<bits/stdc++.h>
using namespace std;
double dp[][][];
int main() {
int t;
cin >> t;
int k=;
while(t--) {
int n,m;scanf("%d%d",&n,&m);
memset(dp,,sizeof(dp));
dp[][][]=;
for(int val= ; val<n*m ; val++) ///放其
{
for(int i= ; i<=n ; i++)
{
for(int j= ; j<=m ; j++)
{
if(dp[val][i][j]==) continue;
double p1,p2,p3,p4;
if( i<n ||j<m){
p1=(i*j-val)*1.0/(n*m-val);
dp[val+][i][j]+=dp[val][i][j]*p1;
}
p2=j*(n-i)*1.0/(n*m-val);
dp[val+][i+][j]+=dp[val][i][j]*p2;
p3=i*(m-j)*1.0/(n*m-val);
dp[val+][i][j+]+=dp[val][i][j]*p3;
p4=(n-i)*(m-j)*1.0/(n*m-val);
dp[val+][i+][j+]+=dp[val][i][j]*p4; }
}
}
double ans=;
for(int val= ; val<=n*m ; val++)
{
ans+=dp[val][n][m]*val;
//cout<<dp[val][n][m]<<endl;
}
printf("%.12f\n",ans); }
return ;
}
ZOJ 3822 ( 2014牡丹江区域赛D题) (概率dp)的更多相关文章
- zoj 3822 Domination(2014牡丹江区域赛D题) (概率dp)
3799567 2014-10-14 10:13:59 Acce ...
- ACM学习历程——ZOJ 3822 Domination (2014牡丹江区域赛 D题)(概率,数学递推)
Description Edward is the headmaster of Marjar University. He is enthusiastic about chess and often ...
- ACM学习历程——ZOJ 3829 Known Notation (2014牡丹江区域赛K题)(策略,栈)
Description Do you know reverse Polish notation (RPN)? It is a known notation in the area of mathema ...
- zoj 3820(2014牡丹江现场赛B题)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5374 思路:题目的意思是求树上的两点,使得树上其余的点到其中一个点的 ...
- zoj 3827(2014牡丹江现场赛 I题 )
套公式 Sample Input 33 bit25 25 50 //百分数7 nat1 2 4 8 16 32 3710 dit10 10 10 10 10 10 10 10 10 10Sample ...
- zoj 3819(2014牡丹江现场赛 A题 )
题意:给出A班和B班的学生成绩,如果bob(A班的)在B班的话,两个班级的平均分都会涨.求bob成绩可能的最大,最小值. A班成绩平均值(不含BOB)>A班成绩平均值(含BOB) &&a ...
- The 2014 ACM-ICPC Asia Mudanjiang Regional Contest(2014牡丹江区域赛)
The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 题目链接 没去现场.做的网络同步赛.感觉还能够,搞了6题 A:这是签到题,对于A堆除掉.假设没剩余 ...
- zoj 3822 Domination(2014牡丹江区域赛D称号)
Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Judge Edward is the headm ...
- ZOJ 3827 Information Entropy (2014牡丹江区域赛)
题目链接:ZOJ 3827 Information Entropy 依据题目的公式算吧,那个极限是0 AC代码: #include <stdio.h> #include <strin ...
随机推荐
- Java JDK安装教程以及JDK多版本间快速切换配置
原本想自己写一篇,结果在网上发现一篇写的特别好的博文,大家可以去原网址围观浏览加点赞, 只是搬运工+迷弟. 原文地址:https://blog.csdn.net/qq_38916130/article ...
- web 前端2 html css一些小问题技巧
html css一些小问题技巧 1 对于儿子块float后,父亲块如果没内容就不见了,如何让父亲块依然跟随飘起了的儿子块撑起来呢?? 用到的属性after方法 公共方法作为继承即可. 1.1 方法 ...
- JAVA总结--代码规范
一.命名规范 1.标识符:统一.达意.简洁 统一:一个词有多种表达方式,不求最好,但求统一:例:供应商,既可以用supplier,也可以用provider,选择一种统一使用: 达意:明确表达其意义,正 ...
- Maven-Eclipse使用maven创建HelloWorld Java项目
1.依次选择File-->New-->Other-->Maven-->Maven Project,Next 2.选择maven-archetype-quickstart,Nex ...
- 不用找了,300 分钟帮你搞定 Spring Cloud!
最近几年,微服务架构一跃成为 IT 领域炙手可热的话题,大量一线互联网公司因为庞大的业务体量和业务需求,纷纷投入了微服务架构的建设中,像阿里巴巴.百度.美团等大厂,很早就已经开始了微服务的实践和应用. ...
- ssh1
#coding=utf-8 import paramiko ssh = paramiko.SSHClient() #允许链接不在linux上.ssh文件中不在known_hosts文件中的主机 ssh ...
- Html5移动端页面自适应布局详解(rem布局)
在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport,通读网上的各种对于viewport的解释之后 大概viewport可以理解为三种 1.layout viewport ...
- Jquery WEUI 滚动加载(infinite)不触发
源代码:(1.0.1版本) Infinite.prototype.scroll = function() { var container = this.container; var offset = ...
- 国内下载Flutter
出现镜像错误等现象属于源码包不全面,国内下载镜像添加环境变量. ①:Linux执行如下操作 export PUB_HOSTED_URL=https://pub.flutter-io.cn export ...
- linux下的mongodb的备份与恢复
mongodb的备份有两种方式: 1.直接拷贝数据目录下的一切文件 2.使用mongodump方式 3.主从复制:http://www.cnblogs.com/huangxincheng/archiv ...