POJ 2151 Check the difficulty of problems (概率dp)
题意:给出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)相关推荐
- Check the difficulty of problems (概率dp求概率)
Check the difficulty of problems POJ - 2151 大致题意: m个问题,t个队伍,要求冠军队伍至少解决n个问题,给出每个队伍解决每个问题的概率 求每一个队至少解决 ...
- poj 2151 Check the difficulty of problems
题意:有m到题,t个队伍,给出第 i 支队作出 第 j 道题的概率 Pij.求每个队至少作出一道题,作出最多的那个队伍至少作出 n 道题的概率. dp[i][j][k]表示第 i 支队前 j 道题作出 ...
- 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]* ...
- 【POJ - 2151】Check the difficulty of problems(概率dp)
题干: Organizing a programming contest is not an easy job. To avoid making the problems too diffic ...
- Check the difficulty of problems - poj 2151 (概率+DP)
有 T(1<T<=1000) 支队伍和 M(0<M<=30) 个题目,已知每支队伍 i 解决每道题目 j 的的概率 p[i][j],现在问:每支队伍至少解决一道题,且解题最多的 ...
- [POJ2151]Check the difficulty of problems(概率DP)
传送门 每个队之间是独立的 f[i][j]表示当前队伍前i个题答对j个的概率 满足条件的概率 == 全部方案(除去答对0)的概率 - 不满足条件的概率(每个队伍答对1~n-1) #include &l ...
- 【POJ - 3744】Scout YYF I(概率dp,矩阵快速幂优化dp)
题干: 题目大意: 在一条不满地雷的路上(无限长),你现在的起点在1处.在N个点处布有地雷,1<=N<=10.地雷点的可能坐标范围:[1,100000000]. 每次前进p的概率前进一步, ...
- 【原创】概率DP总结 by kuangbin
概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...
- poj 3071 Football(概率dp)
http://poj.org/problem? id=3071 大致题意:有2^n个足球队分成n组打比赛.给出一个矩阵a[][],a[i][j]表示i队赢得j队的概率.n次比赛的流程像这样France ...
最新文章
- 2022最新!基于深度transformer的时间序列异常检测模型
- c语言课程设计走迷宫游戏,C语言课程设计-迷宫游戏.doc
- MYSQL使用inner join 进行 查询/删除/修改示例
- response code 404 500
- XgBoost使用及调参教程
- 镜像VirtualBox 下安装 CentOS 7搭建python项目
- 信息学奥赛一本通(1132:石头剪子布)
- 乐高无线服务器必须有房主,乐高无限成就有哪些-乐高无限成就大全_手心游戏...
- 记一次AD域域管理员密码更改导致某系统群集管理器故障排查解决过程
- 项目建议书模板doc_简历模板大全,直接可以下载使用的简历模板
- Android 索引的实现
- 中国物流市场趋势报告、技术动态创新及市场预测
- linux退出编辑菱宏,Confluence 6 空间中的常用宏
- deepin更新依赖错误_Ubuntu安装deepin-wine解决依赖问题
- PYTHON实现迅雷、FLASHGET、QQ旋风转真实链接、磁链转种子文件、迅雷快传链接抓取
- DSP C6657 image_processing_evmc6657l网页加载图片示例
- SOFR, So Far ... So Good?
- 在 JavaScript 中访问对象属性的 3 种方法
- C# 加减乘除计算器
- 高数 04.03分部积分法
热门文章
- 一个封装的使用Apache HttpClient进行Http请求(GET、POST、PUT等)的类。
- 自定义控件(一) Activity的构成(PhoneWindow、DecorView)
- Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号...
- 一个关于native sql的程序
- ccna设备的NAT地址转换
- omnicppcomplete - a Vim plugin [转载]
- JavaEE高级-MyBatis学习笔记
- C++线程同步之临界区
- drf解决跨域问题 使用 django-corse-headers扩展
- 洛谷2051 [AHOI2009]中国象棋