题意:给出m、t、n,接着给出t行m列,表示第i个队伍解决第j题的概率。
现在让你求:每个队伍都至少解出1题,且解出题目最多的队伍至少要解出n道题的概率是多少?

思路:求补集。
即所有队伍都解出题目的概率,减去所有队伍解出的题数在1~n-1之间的概率

这里关键是如何求出某个队伍解出的题数在1~n-1之间的概率,采用dp的方法:

用p(i,j)表示前i道题能解出j道的概率,有
p(i,j)=p(i-1,j)*(1-p(i))+p(i-1,j-1)*p(i)
p(i)表示解出第i题的概率。

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>using namespace std;
const int maxT=1000+5;
const int maxm=35;
int m,t,n;
double prob[maxm]; //存储队伍解决第i道题的概率
double p[maxm][maxm]; //p[i][j]表示某队伍前i道题解决了j道题的概率
double pb[maxT]; //pb[i]存储第i个队伍解出的题数在1~n-1之间的概率
double ret; //所有队伍都解出题的概率int main() {while(scanf("%d%d%d",&m,&t,&n)!=EOF) {if(m==0 && t==0 && n==0)break;ret=1;for(int i=0; i<t; i++) {p[0][0]=1;for(int j=1; j<=m; j++) {scanf("%lf",&prob[j]);p[j][0]=p[j-1][0]*(1-prob[j]);p[j][j]=p[j-1][j-1]*prob[j];}for(int k=1; k<=m; k++) {for(int r=1; r<k; r++) {p[k][r]=p[k-1][r-1]*(prob[k])+p[k-1][r]*(1-prob[k]);}}pb[i]=0;for(int j=1; j<=n-1; j++) {pb[i]+=p[m][j];}ret*=(1-p[m][0]);}double sum=1; //求所有队伍解出的题数在1~n-1之间的概率for(int i=0; i<t; i++) {sum*=pb[i];}double ans=ret-sum;printf("%.3lf\n",ans);}return 0;
}

View Code

转载于:https://www.cnblogs.com/chenxiwenruo/p/3720770.html

POJ 2151 Check the difficulty of problems (概率dp)相关推荐

  1. Check the difficulty of problems (概率dp求概率)

    Check the difficulty of problems POJ - 2151 大致题意: m个问题,t个队伍,要求冠军队伍至少解决n个问题,给出每个队伍解决每个问题的概率 求每一个队至少解决 ...

  2. poj 2151 Check the difficulty of problems

    题意:有m到题,t个队伍,给出第 i 支队作出 第 j 道题的概率 Pij.求每个队至少作出一道题,作出最多的那个队伍至少作出 n 道题的概率. dp[i][j][k]表示第 i 支队前 j 道题作出 ...

  3. POJ-2151 Check the difficulty of problems 概率DP

    题目链接:http://poj.org/problem?id=2151 组合数做肯定超时,容易看出是DP.f[i][j]表示某个队的前j个题目做出i个题目的概率,则f[i][j]=f[i][j-1]* ...

  4. 【POJ - 2151】Check the difficulty of problems(概率dp)

    ​​​​题干: Organizing a programming contest is not an easy job. To avoid making the problems too diffic ...

  5. Check the difficulty of problems - poj 2151 (概率+DP)

    有 T(1<T<=1000) 支队伍和 M(0<M<=30) 个题目,已知每支队伍 i 解决每道题目 j 的的概率 p[i][j],现在问:每支队伍至少解决一道题,且解题最多的 ...

  6. [POJ2151]Check the difficulty of problems(概率DP)

    传送门 每个队之间是独立的 f[i][j]表示当前队伍前i个题答对j个的概率 满足条件的概率 == 全部方案(除去答对0)的概率 - 不满足条件的概率(每个队伍答对1~n-1) #include &l ...

  7. 【POJ - 3744】Scout YYF I(概率dp,矩阵快速幂优化dp)

    题干: 题目大意: 在一条不满地雷的路上(无限长),你现在的起点在1处.在N个点处布有地雷,1<=N<=10.地雷点的可能坐标范围:[1,100000000]. 每次前进p的概率前进一步, ...

  8. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

  9. poj 3071 Football(概率dp)

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

最新文章

  1. 2022最新!基于深度transformer的时间序列异常检测模型
  2. c语言课程设计走迷宫游戏,C语言课程设计-迷宫游戏.doc
  3. MYSQL使用inner join 进行 查询/删除/修改示例
  4. response code 404 500
  5. XgBoost使用及调参教程
  6. 镜像VirtualBox 下安装 CentOS 7搭建python项目
  7. 信息学奥赛一本通(1132:石头剪子布)
  8. 乐高无线服务器必须有房主,乐高无限成就有哪些-乐高无限成就大全_手心游戏...
  9. 记一次AD域域管理员密码更改导致某系统群集管理器故障排查解决过程
  10. 项目建议书模板doc_简历模板大全,直接可以下载使用的简历模板
  11. Android 索引的实现
  12. 中国物流市场趋势报告、技术动态创新及市场预测
  13. linux退出编辑菱宏,Confluence 6 空间中的常用宏
  14. deepin更新依赖错误_Ubuntu安装deepin-wine解决依赖问题
  15. PYTHON实现迅雷、FLASHGET、QQ旋风转真实链接、磁链转种子文件、迅雷快传链接抓取
  16. DSP C6657 image_processing_evmc6657l网页加载图片示例
  17. SOFR, So Far ... So Good?
  18. 在 JavaScript 中访问对象属性的 3 种方法
  19. C# 加减乘除计算器
  20. 高数 04.03分部积分法

热门文章

  1. 一个封装的使用Apache HttpClient进行Http请求(GET、POST、PUT等)的类。
  2. 自定义控件(一) Activity的构成(PhoneWindow、DecorView)
  3. Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号...
  4. 一个关于native sql的程序
  5. ccna设备的NAT地址转换
  6. omnicppcomplete - a Vim plugin [转载]
  7. JavaEE高级-MyBatis学习笔记
  8. C++线程同步之临界区
  9. drf解决跨域问题 使用 django-corse-headers扩展
  10. 洛谷2051 [AHOI2009]中国象棋