POJ2151-Check the difficulty of problems(概率DP)
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 4512 | Accepted: 1988 |
Description
1. All of the teams solve at least one problem.
2. The champion (One of those teams that solve the most problems) solves at least a certain number of problems.
Now the organizer has studied out the contest problems, and through the result of preliminary contest, the organizer can estimate the probability that a certain team can successfully solve a certain problem.
Given the number of contest problems M, the number of teams T, and the number of problems N that the organizer expect the champion solve at least. We also assume that team i solves problem j with the probability Pij (1 <= i <= T, 1<= j <= M). Well, can you
calculate the probability that all of the teams solve at least one problem, and at the same time the champion team solves at least N problems?
Input
the j-th number in the i-th line is just Pij. A test case of M = T = N = 0 indicates the end of input, and should not be processed.
Output
Sample Input
2 2 2
0.9 0.9
1 0.9
0 0 0
Sample Output
0.972
题意:
有T支队伍參加比赛,比赛一共同拥有M道题,要求算出第一名要至少做出N道题,且其它队伍都做出题目的概率
做法:
先算出每一个队伍至少做出一题的概率,然后减去全部队解题数都小于N题且大于1题的概率,即为所求。
非常easy的概率DP,DP[i][j]表示一支队伍解前i道题,解出j题的概率,递推就可以
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int M,T,N;
double p[1010][40];
double dp[40][40];
int main(){ while(~scanf("%d%d%d",&M,&T,&N) && N+T+M){
double all = 1.0;
for(int i = 0; i < T; i++){
double t = 1.0;
for(int j = 0; j < M; j++){
scanf("%lf",&p[i][j]);
t *= (1-p[i][j]);
}
all *= (1-t);
}
double no = 1.0;
for(int i = 0; i < T; i++){
dp[0][0] = 1-p[i][0];
dp[0][1] = p[i][0];
for(int j = 1; j < M; j++){
dp[j][0] = dp[j-1][0]*(1-p[i][j]);
for(int k = 1; k <= j+1; k++){
dp[j][k] = dp[j-1][k]*(1-p[i][j])+dp[j-1][k-1]*p[i][j];
}
}
double t = 0.0;
for(int j = 1; j < N; j++){
t += dp[M-1][j];
}
no *= t;
}
printf("%.3f\n",all-no);
}
return 0;
}
POJ2151-Check the difficulty of problems(概率DP)的更多相关文章
- [POJ2151]Check the difficulty of problems (概率dp)
题目链接:http://poj.org/problem?id=2151 题目大意:有M个题目,T支队伍,第i个队伍做出第j个题目的概率为Pij,问每个队伍都至少做出1个题并且至少有一个队伍做出N题的概 ...
- [poj2151]Check the difficulty of problems概率dp
解题关键:主要就是概率的推导以及至少的转化,至少的转化是需要有前提条件的. 转移方程:$dp[i][j][k] = dp[i][j - 1][k - 1]*p + dp[i][j - 1][k]*(1 ...
- POJ 2151 Check the difficulty of problems 概率dp+01背包
题目链接: http://poj.org/problem?id=2151 Check the difficulty of problems Time Limit: 2000MSMemory Limit ...
- [ACM] POJ 2151 Check the difficulty of problems (概率+DP)
Check the difficulty of problems Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4748 ...
- POJ 2151 Check the difficulty of problems (概率DP)
题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 ,求每队至少解出一题且冠军队至少解出N道题的概率. 析:概率DP,dp[i][j][k] 表示第 i 个队伍,前 j 个题,解出 ...
- POJ2157 Check the difficulty of problems 概率DP
http://poj.org/problem?id=2151 题意 :t个队伍m道题,i队写对j题的概率为pij.冠军是解题数超过n的解题数最多的队伍之一,求满足有冠军且其他队伍解题数都大于等于1 ...
- POJ2151Check the difficulty of problems 概率DP
概率DP,还是有点恶心的哈,这道题目真是绕,问你T个队伍.m个题目.每一个队伍做出哪道题的概率都给了.冠军队伍至少也解除n道题目,全部队伍都要出题,问你概率为多少? 一開始感觉是个二维的,然后推啊推啊 ...
- POJ-2151 Check the difficulty of problems---概率DP好题
题目链接: https://vjudge.net/problem/POJ-2151 题目大意: ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 问 每队至少解出一题且冠军队至少解出N ...
- poj 2151Check the difficulty of problems<概率DP>
链接:http://poj.org/problem?id=2151 题意:一场比赛有 T 支队伍,共 M 道题, 给出每支队伍能解出各题的概率~ 求 :冠军至少做出 N 题且每队至少做出一题的概率~ ...
- 【POJ】2151:Check the difficulty of problems【概率DP】
Check the difficulty of problems Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8903 ...
随机推荐
- codeforces 3D . Least Cost Bracket Sequence 贪心
题目链接 给一个字符串, 由( ) 以及? 组成, 将?换成( 或者 ) 组成合法的括号序列, 每一个?换成( 或者 ) 的代价都不相同, 问你最小代价是多少, 如果不能满足输出-1. 弄一个变量nu ...
- (C)学生成绩管理系统
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h&g ...
- SQL Server 表压缩
表压缩有三个选项 1.page 2.row 3.none ----------------------------------------------------------------------- ...
- oracle 查询表的大小,表空间的使用情况,默认表空间
oracle 查询表的大小,表空间的使用情况,默认表空间 oracle 查询表的大小,表空间的使用情况,默认表空间 --查看某张表占用磁盘空间大小 ( 表名大写 ) Select Segment_Na ...
- Oracle EBS-SQL (BOM-4):检查期间新增编码总数.sql
selectFU.description 创建者,msi.CREATION_DATE ...
- 退货行RMA编号改为必输选项
应用 Oracle Inventory 层 Level Function 函数名 Funcgtion Name RCV_RCVTXERE 表单名 Form Name RCVTXERE 说明 Descr ...
- RejexLib
http://www.regexlib.com/ http://www.brics.dk/automaton/index.html http://code.google.com/p/automatap ...
- poj2390
#include <stdio.h> #include <stdlib.h> int main() { int r,m,y,i; scanf("%d %d %d&qu ...
- background-size:的认识;
background-size:100%;其实是元素的背景图片的宽度和元素宽度相同,高度auto: 也可理解为:background-size:100% auto; 而background:cover ...
- ReactNative遇到的一些坑
1. 如果通过一个url进行下载上传操作,这个url中包含有中文的话,一定要记得将这个url转为URLEncode编码. 如: encodeURI('http://test/有中文.doc'); 2. ...