题目链接

题意:

  现在有k只麻球, 每只麻球只能存活一天, 第二天就会死去, 死去之前可能生下x只小麻球(x = 0,1,2,...,n  1), 概率分别为P[0], P[1], ... , P[n - 1]。

  现求, m天之后, 所有麻球全死去的概率, 包括m天之前就已经全部死去。

思路:

  每只麻球都是相互独立的, 那么 可以先算初始只有一只麻球,m天之内全部死去的概率。

  设f(x) 为 初始只有一只麻球, x天后全部死去的概率。

  得:

    f(x) = P[0] * f(x - 1)^0 + P[1] * f(x - 1) + P[2] * f(x-1)^2 + .. + P[n - 1] * f(x - 1)^(n - 1)。

  P[j]为一只麻球生下j只小麻球的概率, 又因为所有的麻球都要在x天之内全部死去, 所以 这j只小麻球需要在x - 1天全部死去, 而每只麻球相互独立, 所以概率相乘。

  得:

    初始条件:f[0] = P[0]。

  递推得到f[m], 答案即为f[m] ^ k。

代码如下:

 #include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <set>
#include <map>
#include <list>
#include <queue>
#include <string>
#include <vector>
#include <fstream>
#include <iterator>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define MAXN 1010
#define MOD 1000000007
#define eps 1e-6
int n, k, m;
double P[MAXN];
double f[MAXN];
double qpow(double x, int k)
{
double res = 1.0;
while(k)
{
if(k & ) res = res * x;
x = x * x;
k >>= ;
}
return res;
}
void init()
{
memset(f, , sizeof(f));
f[] = ;
f[] = P[];
for(int x = ; x <= m; x ++)
for(int j = ; j < n; j ++)
f[x] = f[x] + P[j] * qpow(f[x - ], j);
} int main()
{
int T;
int kcase = ;
scanf("%d", &T);
while(T --)
{
scanf("%d %d %d", &n, &k, &m);
for(int i = ; i < n; i ++)
scanf("%lf", &P[i]);
init();
printf("Case #%d: %.7lf\n", ++ kcase, qpow(f[m], k));
}
return ;
}

Uva_11021 Tribles的更多相关文章

  1. UVA11021 Tribles[离散概率 DP]

    UVA - 11021 Tribles GRAVITATION, n. “The tendency of all bodies to approach one another with a stren ...

  2. uva11021 - Tribles(概率)

    11021 - Tribles GRAVITATION, n.“The tendency of all bodies to approach one another with a strengthpr ...

  3. UVA - 11021 Tribles 概率dp

    题目链接: http://vjudge.net/problem/UVA-11021 Tribles Time Limit: 3000MS 题意 有k只麻球,每只活一天就会死亡,临死之前可能会出生一些新 ...

  4. 概率dp - UVA 11021 Tribles

    Tribles Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33059 Mean: 有k个细 ...

  5. UVA 11021 - Tribles(概率递推)

    UVA 11021 - Tribles 题目链接 题意:k个毛球,每一个毛球死后会产生i个毛球的概率为pi.问m天后,全部毛球都死亡的概率 思路:f[i]为一个毛球第i天死亡的概率.那么 f(i)=p ...

  6. 洛谷 UVA11021 Tribles

    UVA11021 Tribles 题意翻译 题目大意 一开始有kk种生物,这种生物只能活1天,死的时候有p_ipi​的概率产生ii只这种生物(也只能活一天),询问m天内所有生物都死的概率(包括m天前死 ...

  7. UVA 11021 C - Tribles(概率DP)

    记忆化就可以搞定,比赛里都没做出来,真的是态度有问题啊... #include <iostream> #include<cstdio> #include<cstring& ...

  8. UVa 11021 - Tribles

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  9. UVa 11021 (概率 递推) Tribles

    Tribble是麻球? 因为事件都是互相独立的,所以只考虑一只麻球. 设f(i)表示一只麻球i天后它以及后代全部死亡的概率,根据全概率公式: f(i) = P0 + P1 * f(i-1) + P2 ...

随机推荐

  1. 【转】Android 混淆代码总结

    http://blog.csdn.net/lovexjyong/article/details/24652085 为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的 ...

  2. 源泉书签,助您管理海量收藏。www.yuanquanshuqian.com,今日更新:多标签功能已实现

    源泉书签.助您管理海量收藏.www.yuanquanshuqian.com,今日更新:多标签功能已实现

  3. KDB调试内核

    http://www.ibm.com/developerworks/cn/linux/l-kdbug/

  4. 运行codeblocks时出现的问题解决

    When I try running Code::Blocks, I get the following error message: Another program instance is alre ...

  5. 【转】warning C4819,该文件保存为 Unicode 格式以防止数据丢失,处理方法

    以下的解决方案只是把错误给屏蔽掉而已,并不能真正解决这个警告.仅供参考! 当项目引用到外部源代码后,经常出现4819错误,警告信息如下: warning C4819: 该文件包含不能在当前代码页(93 ...

  6. 字符串反转实现(C++)

    字符串反转 C++实现,不使用系统函数: // ReverseString.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include ...

  7. Java实现直接插入查找

    import java.util.Scanner; /*算法思想:每趟将一个待排序的元素作为关键字,按照关键字值大小插入到已排好序的那部分序列的适当位置上,直到插入完成,*/ /*平均时间复杂度O(n ...

  8. python: pandas模块

    10分钟入门 pandas 评:我跟作者的智商差距是有多大,才能让我用60分钟看完作者认为10分钟的内容... 详细内容见 Cookbook 习惯上我们先导入 : In [1]: import pan ...

  9. bootstrap3.0 模态框显示的文字超出怎么办

    版本:bootstrap3.3 模态框文字超出 解决方案: 在html中控制自动换行   其实只要在表格控制中添加一句<div style="word-break:break-all& ...

  10. Intellj新增maven项目骨架

    我们经常用maven骨架构建项目,本来普通的几个archetype就够用的,但是近来要来时开发liferay项目 相关的项目骨架Intellj IDEA就没有内置,所以就想添加进去,  有两个办法可以 ...