「 poj 2096 」 Collecting Bugs
先说一下题意
$s$ 个子系统还中有 $n$ 种 $\text{bug}$,每天可以随机选择一种 $\text{bug}$,问选出 $n$ 种 $\text{bug}$ 在 $s$ 种子系统中的期望天数。
解题思路
不妨设 $dp[i][j]$ 表示在选择 $i$ 种 $\text{bug}$,$j$ 种子系统的期望天数。
那么新选择的 $\text{bug}$ 就会出现一下四种情况
- 新发现的 $\text{bug}$ 在已经发现的 $i$ 种 $\text{bug}$中,已经发现的 $j$ 个子系统中,概率是 $p1=\frac{i}{n} \times \frac{j}{s}$
- 新发现的 $\text{bug}$ 在已经发现的 $i$ 种 $\text{bug}$中,但却在新的子系统里,概率是 $p2=\frac{i}{n} \times \frac{s-j}{s}$
- 新发现的 $\text{bug}$ 是新的 $\text{bug}$,但却在已经发现的子系统里,概率是 $p3=\frac{n-i}{n} \times \frac{j}{s}$
- 新发现的 $\text{bug}$ 是新的 $\text{bug}$,也在新的子系统中,概率是 $p4=\frac{n-i}{n} \times \frac{s-j}{s}$
稍微推一下就能够得到状态转移方程。
附上代码
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n, s;
double dp[][], p1, p2, p3, p4;
int main() {
while (scanf("%d%d", &n, &s) == ) {
memset(dp, , sizeof(dp));
for(int i=n; i>=; i--) {
for(int j=s; j>=; j--) {
if(i == n && j == s) continue;
p1 = 1.0 * i/n * j/s;
p2 = 1.0 * i/n * (s-j)/s;
p3 = 1.0 * (n-i)/n * j/s;
p4 = 1.0 * (n-i)/n * (s-j)/s;
dp[i][j] = (dp[i][j+]*p2 + dp[i+][j]*p3 + dp[i+][j+]*p4 + 1.0) / (1.0-p1);
}
}
printf("%.4lf\n", dp[][]);
}
}
「 poj 2096 」 Collecting Bugs的更多相关文章
- 【POJ 2096】 Collecting Bugs
[题目链接] http://poj.org/problem?id=2096 [算法] 概率DP [代码] #include <algorithm> #include <bitset& ...
- 【POJ 2096】Collecting Bugs 概率期望dp
题意 有s个系统,n种bug,小明每天找出一个bug,可能是任意一个系统的,可能是任意一种bug,即是某一系统的bug概率是1/s,是某一种bug概率是1/n. 求他找到s个系统的bug,n种bug, ...
- 「专题训练」Collecting Bugs(POJ-2096)
题意与分析 题意大致是这样的:给定一个\(n\times s\)的矩阵,每次可以随机的在这个矩阵内给一个格子染色(染过色的仍然可能被选中),问每一行和每一列都有格子被染色的次数的期望. 这题如果从概率 ...
- 「POJ 3666」Making the Grade 题解(两种做法)
0前言 感谢yxy童鞋的dp及暴力做法! 1 算法标签 优先队列.dp动态规划+滚动数组优化 2 题目难度 提高/提高+ CF rating:2300 3 题面 「POJ 3666」Making th ...
- 【POJ】【2096】Collecting Bugs
概率DP/数学期望 kuangbin总结中的第二题 大概题意:有n个子系统,s种bug,每次找出一个bug,这个bug属于第 i 个子系统的概率为1/n,是第 j 种bug的概率是1/s,问在每个子系 ...
- 「POJ Challenge」生日礼物
Tag 堆,贪心,链表 Solution 把连续的符号相同的数缩成一个数,去掉两端的非正数,得到一个正负交替的序列,把该序列中所有数的绝对值扔进堆中,用所有正数的和减去一个最小值,这个最小值的求法与「 ...
- 「POJ 3268」Silver Cow Party
更好的阅读体验 Portal Portal1: POJ Portal2: Luogu Description One cow from each of N farms \((1 \le N \le 1 ...
- 「POJ 1135」Domino Effect(dfs)
BUPT 2017 Summer Training (for 16) #3G 题意 摆好的多米诺牌中有n个关键牌,两个关键牌之间有边代表它们之间有一排多米诺牌.从1号关键牌开始推倒,问最后倒下的牌在哪 ...
- 「POJ - 1003」Hangover
BUPT 2017 summer training (16) #2C 题意 n个卡片可以支撑住的长度是1/2+1/3+1/4+..+1/(n+1)个卡片长度.现在给出需要达到总长度,求最小的n. 题解 ...
随机推荐
- 获取浏览器弹窗alert、自定义弹窗以及其操作
web自动化测试第10步:获取浏览器弹窗alert.自定义弹窗以及其操作 - CSDN博客 http://blog.csdn.net/ccggaag/article/details/76573857 ...
- 【OI】指针线段树&指针
对于线段树,我们一般需要n*4的空间去存储线段树,然后有一种玄学操作是用指针来实现线段树. #include <inttypes.h> #include <algorithm> ...
- NTFS文件系统的单个文件最大到底有多大?
于NTFS文件系统的单个文件最大到底有多大? 闲来无事突然想到这个问题,到网上搜索了一下也没有一个固定的解释. 于是到微软官方知识库去寻找答案: 注意:基础硬件限制可能会对任何文件系统施加额外的分区大 ...
- java8新特性-方法引用
方法引用:若 Lambda 体中的功能,已经有方法提供了实现,可以使用方法引用 (可以将方法引用理解为 Lambda 表达式的另外一种表现形式) 1. 对象的引用 :: 实例方法名2. 类名 :: 静 ...
- YTU 2697: 血型统计
2697: 血型统计 时间限制: 1 Sec 内存限制: 128 MB 提交: 405 解决: 164 题目描述 黑猫警长在犯罪现场发现了一些血迹,现已经委托检验机构确定了血型,需要统计各种血型的 ...
- js验证手机号,身份证,车牌号验证
js验证手机号 <input type="text" class="identificationno"> // 身份证号码为15位或者18位,15 ...
- MAMP/xampp安装redis
nmp/amp/xampp安装redis 一.安装redis服务 1.通过homebrew安装redis sudo brew install redis 2.启动redis服务,且接受客户端连接 su ...
- EasyUI Tree 树
转自:http://www.jeasyui.net/plugins/185.html 通过 $.fn.tree.defaults 重写默认的 defaults. 树(tree)在网页中以树形结构显示分 ...
- robotframework - Edit编辑器
1.测试项目&套件 提供的Edit编辑器 2.在 Edit 标签页中主要分:加载外部文件.定义内部变量.定义元数据等三个部分. (1):加载外部文件Add Library:加载测试库,主要是[ ...
- 'latin-1' codec can't encode characters in position解决字符问题
当遇到这样的报错时,原因是: pymysql库在处理mysql语句时,默认的编码方式是'latin-1',这种编码方式能识别的字符是有限的 解决办法:找到\site-packages\pymysql\ ...