题意:

这道题目的意思很简单,有t个ACM队,m个题目,题目给出了每个队对每个题目做出的概率大小(0到1之间,包含0和1),要求每个队至少做出一道题(签到题),同时,要求获胜队必须至少能够做出n道题(获胜对不止一个),这到题目实际上就是一个dp+概率论知识,dp的推导也是概率论中的全概率公式推导出来的,之后就是如何利用概率论知识求解问题了。首先解释一下dp如何推导。我们令dp[i][j]为前i道题中做出j道题的概率,那么依据全概率公式,现在有两种情况:

1)第i道题做出来的,在此条件下dp[i][j]=dp[i-1][j-1]

2)第i道题没有做出来,在此条件下dp[i][j]=dp[i-1][j]

那么依据全概率公式dp[i][j]=dp[i-1][j-1]*p[i]+dp[i-1][j]*(1-p[i]),其中p[i]为第i题做出的概率。

状态转移方程确定后,那么就可以求解出前i个题目中做出j道题的概率了。

问题是所有的基本条件都已经确定了,那么题目要求解问题的概率该如何计算。这里,很容易认为每个队至少做出一道题和获胜队至少做出n道题是独立事件。其实不然。应该说他们之间存在包含于被包含的关系,这里分两种情况讨论:

我们将每个队都至少作出一道题记为事件A,获胜队至少作出n道题记为事件B,题目要求的就是p(AB)的结果

1)当n=1时,事件B包含事件A,那么p(AB)就转化为p(A),即为每个队都至少作出一道题的概率。

2)当n>1时,事件A包含事件AB,那么p(AB)就是p(A)-p(A-AB),这里补充说明一下,事件A-AB就是所有队都只作出少于n道题的概率(即作出1到n-1道题的概率)
————————————————
版权声明:本文为CSDN博主「阿杜dyh」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/i_want_to_be_a_god/article/details/25926243

 #include<cstdio>
#include<algorithm>
#include<math.h>
#include<string.h>
using namespace std;
const int maxn=1e3+;
double dp[maxn][][]; //表示第i只队伍在j道题的情况下赢k局的概率
double p[maxn][];
int main()
{
int n,t,m;
while(scanf("%d%d%d",&n,&t,&m)!=EOF){
if(!(n+t+m)) break;
for(int i=;i<t;i++)
for(int j=;j<=n;j++){
scanf("%lf",&p[i][j]);
}
memset(dp,,sizeof(dp));
for(int i=;i<t;i++){
dp[i][][]=;
for(int j=;j<=n;j++){
dp[i][j][]=dp[i][j-][]*(-p[i][j]);
for(int k=;k<=j;k++){
dp[i][j][k]=dp[i][j-][k-]*p[i][j]+dp[i][j-][k]*(-p[i][j]);
}
}
}
double ans=;
for(int i=;i<t;i++)
ans*=-dp[i][n][];
double temp=;
for(int i=;i<t;i++){
double sum=;
for(int j=;j<m;j++)
sum+=dp[i][n][j]; //计算出做出的题在1~n-1的数量的概率;
temp*=sum; //将每一个做不出的概率相乘;
}
ans-=temp; //减去不符合的情况
printf("%.3f\n",ans);
}
return ;
}

概率dp poj 2151的更多相关文章

  1. 概率dp poj 3071

    题目首先给出一个n,表示比赛一共进行n轮,那么队伍就有2^n只队伍输入一个2^n*2^n的矩阵,p[i][j]代表队伍i打败队伍j的概率dp[i][j]代表第i轮比赛的时候,队伍j赢的概率首先初始化时 ...

  2. 矩阵快速幂+概率DP poj 3744

    题意:在一条不满地雷的路上,你现在的起点在1处.在N个点处布有地雷,1<=N<=10.地雷点的坐标范围:[1,100000000]. 每次前进p的概率前进一步,1-p的概率前进1-p步.问 ...

  3. 【POJ】2151:Check the difficulty of problems【概率DP】

    Check the difficulty of problems Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8903   ...

  4. POJ 2151 Check the difficulty of problems (概率DP)

    题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 ,求每队至少解出一题且冠军队至少解出N道题的概率. 析:概率DP,dp[i][j][k] 表示第 i 个队伍,前 j 个题,解出 ...

  5. 概率dp的边界处理 POJ 2096

    题目地址:https://vjudge.net/problem/POJ-2096 说的是有n个bug,和s个系统.现在一个人一天能发现一个bug,它可能是任何一个系统中的,也可能会发现已经发现过的bu ...

  6. poj 3071 Football(概率dp)

    id=3071">http://poj.org/problem? id=3071 大致题意:有2^n个足球队分成n组打比赛.给出一个矩阵a[][],a[i][j]表示i队赢得j队的概率 ...

  7. POJ 2096 Collecting Bugs (概率DP,求期望)

    Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material stu ...

  8. POJ 2096 Collecting Bugs (概率DP)

    题意:给定 n 类bug,和 s 个子系统,每天可以找出一个bug,求找出 n 类型的bug,并且 s 个都至少有一个的期望是多少. 析:应该是一个很简单的概率DP,dp[i][j] 表示已经从 j ...

  9. POJ 3156 - Interconnect (概率DP+hash)

    题意:给一个图,有些点之间已经连边,现在给每对点之间加边的概率是相同的,问使得整个图连通,加边条数的期望是多少. 此题可以用概率DP+并查集+hash来做. 用dp(i,j,k...)表示当前的每个联 ...

随机推荐

  1. 曼孚科技:AI自然语言处理(NLP)领域常用的16个术语

    ​自然语言处理(NLP)是人工智能领域一个十分重要的研究方向.NLP研究的是实现人与计算机之间用自然语言进行有效沟通的各种理论与方法. 本文整理了NLP领域常用的16个术语,希望可以帮助大家更好地理解 ...

  2. 关于Oracle内存分配-解决实际运行时最大Session数不一致远小于系统配置最大的Session数目

    一.相关的技术准备 1. 关于内存的介绍:https://blog.csdn.net/u013641333/article/details/82732526 2. PGA_AGGREGATE_TARG ...

  3. Java基本语法--控制台输入(Scanner类)

    通过Scanner类获取用户输入时,控制台会一直等待用户的输入,可以输入不同类型的值.本篇博客主要讲解从控制台输入值,即Scanner类的使用方法. Api文档中关于Scanner类的构造方法 键盘输 ...

  4. ECMAScript基本语法——①与HTML的结合方式

    内部JS: HTML页面内定义一个script标签,标签内就是JS代码一般情况会写到特定的位置,写到head标签内 外部JS: HTML页面内定义一个script标签,使用src加载外部的JS文件 注 ...

  5. C++-有感

    今日在图书馆待了差不多一天,我都忘了我吃饭了没,拿着看视频学习,没啦,主要还是看书,突然感觉有点写不动了. 明天开始不带电脑了,准备把数据结构书重新过一遍,算了,还是不用C++写了,感觉C++居然做题 ...

  6. jquery-validation.js验证插件使用详解

    jquery-validation 使用 一.用前必备 官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: ...

  7. C# LINQ GroupBy

    一.先准备要使用的类: 1.Person类: class Person { public string Name { set; get; } public int Age { set; get; } ...

  8. ts中接口的用法

    ts中的接口主要的作用是: 对“对象”进行约束描述 对“类”的一部分行为进行抽象 一.属性接口 接口中可定义 确定属性.可选属性.任意属性.只读属性 1.确定属性 interface UserInfo ...

  9. input标签中的id和name的区别

    做网站很久了,但到现在还没有搞明白input中name和id的区别,最近学习jquery,又遇到这个问题,就在网上搜集资料.看到这篇,就整理出来,以备后用. 可 以说几乎每个做过Web开发的人都问过, ...

  10. 概念理解_L2范数(欧几里得范数)

    L1范数 L1范数是指向量中各个元素绝对值之和 L2范数 L2范数.欧几里得范数一些概念. 首先,明确一点,常用到的几个概念,含义相同. 欧几里得范数(Euclidean norm) ==欧式长度 = ...