[poj2096] Collecting Bugs【概率dp 数学期望】
传送门:http://poj.org/problem?id=2096
题面很长,大意就是说,有n种bug,s种系统,每一个bug只能属于n中bug中的一种,也只能属于s种系统中的一种。一天能找一个bug,问找到的bug涵盖所有种类的bug与所有种类的系统期望需要几天。
令f(i, j)为找到了i种bug,j种系统期望的天数,那么今天再找一个bug,有4种情况:
①,bug种类为已找到的i种中的一种,系统种类为已找到的j种中的一种,则概率p1 = (i / n) * (j / s)
②,bug种类为未找到的(n - i)种中的一种,系统种类为已找到的j种中的一种,则概率p2 = ((n - i) / n) * (j / s)
③,bug种类为已找到的i种中的一种,系统种类为未找到的(s - j)种中的一种,则概率p3 = (i / n) * ((s - j) / s)
④,bug种类为未找到的(n - i)种中的一种,系统种类为未找到的(s - j)种中的一种,则概率p3 = ((n - i) / n) * ((s - j) / s)
则有f(i, j) = f(i, j) * p1 + f(i + 1, j) * p2 + f(i, j + 1) * p3 + f(i + 1, j + 1) * p4 + 1
即f(i, j) = ( f(i + 1, j) * p2 + f(i, j + 1) * p3 + f(i + 1, j + 1) * p4 + 1 ) / (1 - p1)
#include <cstdio> const int maxn = 1005, maxs = 1005; int n, s;
double f[maxn][maxs]; int main(void) {
scanf("%d%d", &n, &s);
for (int i = n; ~i; --i) {
for (int j = s; ~j; --j) {
if (i == n && j == s) {
continue;
}
f[i][j] = (f[i + 1][j] * (1 - (double)i / (double)n) * ((double)j / (double)s) +
f[i][j + 1] * ((double)i / (double)n) * (1 - (double)j / (double)s) +
f[i + 1][j + 1] * (1 - (double)i / (double)n) * (1 - (double)j / (double)s) + 1) / (1 - (double)(i * j) / (double)(n * s));
}
}
printf("%.4f\n", f[0][0]);
return 0;
}
[poj2096] Collecting Bugs【概率dp 数学期望】的更多相关文章
- POJ2096 Collecting Bugs(概率DP,求期望)
Collecting Bugs Ivan is fond of collecting. Unlike other people who collect post stamps, coins or ot ...
- poj 2096 Collecting Bugs (概率dp 天数期望)
题目链接 题意: 一个人受雇于某公司要找出某个软件的bugs和subcomponents,这个软件一共有n个bugs和s个subcomponents,每次他都能同时随机发现1个bug和1个subcom ...
- Poj 2096 Collecting Bugs (概率DP求期望)
C - Collecting Bugs Time Limit:10000MS Memory Limit:64000KB 64bit IO Format:%I64d & %I64 ...
- [POJ2096] Collecting Bugs (概率dp)
题目链接:http://poj.org/problem?id=2096 题目大意:有n种bug,有s个子系统.每天能够发现一个bug,属于一个种类并且属于一个子系统.问你每一种bug和每一个子系统都发 ...
- POJ 2096 Collecting Bugs (概率DP,求期望)
Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material stu ...
- Collecting Bugs (概率dp)
Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material stu ...
- poj 2096 Collecting Bugs 概率dp 入门经典 难度:1
Collecting Bugs Time Limit: 10000MS Memory Limit: 64000K Total Submissions: 2745 Accepted: 1345 ...
- POJ 2096 Collecting Bugs (概率DP)
题意:给定 n 类bug,和 s 个子系统,每天可以找出一个bug,求找出 n 类型的bug,并且 s 个都至少有一个的期望是多少. 析:应该是一个很简单的概率DP,dp[i][j] 表示已经从 j ...
- bzoj1415 [Noi2005]聪聪和可可【概率dp 数学期望】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1415 noip2016 D1T3,多么痛的领悟...看来要恶补一下与期望相关的东西了. 这是 ...
随机推荐
- markdown 插入latex公式练习
markdown 插入latex公式 $$公式$$表示行间公式,本来Tex中使用\(公式\)表示行内公式,但因为Markdown中\是转义字符,所以在Markdown中输入行内公式使用\\(公式\\) ...
- Ubuntu虚拟机+ROS+Android开发环境配置笔记
Ubuntu虚拟机+ROS+Android开发环境配置笔记 虚拟机设置: 1.本地环境:Windows 7:VMWare:联网 2.虚拟环境 :Ubuntu 14.04. 比較稳定,且支持非常多ROS ...
- Python的字符串和列表和字典的方法/函数
字符串 S.find()#可指定范围查找字串,返回索引值,否则返回-1 S.index()#同find,只是找不到的之后返回异常 S.count()#返回找到字串的个数 S.lower()#转小写 S ...
- VS code - code Snippet
For anyone working on the UI and using VS Code, you can create a user Snippet and keyboard shortcut ...
- thinkphp3.2.3 数据库写入add 方法的一些问题。
最近在做项目中遇到的一个数据操作add()方法,在不开启debug的模式下会漏掉一些字段没写入数据库. 当时并不知道是这个原因,明明在开发的时候都是没问题的,怎么突然出现这个问题,找了好久都没有头绪, ...
- [转] logback logback.xml常用配置详解(一)<configuration> and <logger>
转载文章:原文出处:http://aub.iteye.com/blog/1101260 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 根节点< ...
- MVC+ZTree实现对树的CURD及拖拽操作
上一讲中,我们学习了如何使用zTree对一棵大树(大数据量的树型结构的数据表,呵呵,名称有点绕,但说的是事实)进行异步加载,今天这讲,我们来说说,如何去操作这棵大树,无非就是添加子节点,删除节点,编辑 ...
- 2016/05/19 thinkphp 3.2.2 文件上传
显示效果: 多文件上传. 这里是两个文件一起上传 上传到文件夹的效果: ①aa为调用Home下common文件夹下的function.php 中的rname方法 实现的 ②cc为调用与Home ...
- css的白富美
1,CSS(Cascading Style Sheet)是用来装饰HTML的,当浏览器读到这样一个样式的时候,它就会按照这个文档进行格式化(渲染) 2,CSS的组成:选择器和声明,声明又包括属性和属性 ...
- mysql工作原理(网络搜索整理的)
原文网址:Mysql 工作原理 原文网址:MySQL运行原理与基础架构 mysql基本用法原文网址:MySQL(一):基本原理 SQL 语句执行过程 数据库通常不会被直接使用,而是由其他编程语言通过S ...