POJ 2151 Check the difficulty of problems
来源:互联网 发布:淘宝开店显示已有店铺 编辑:程序博客网 时间:2024/05/16 00:52
Check the difficulty of problems
Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 3456 Accepted: 1521
Description
Organizing a programming contest is not an easy job. To avoid making the problems too difficult, the organizer usually expect the contest result satisfy the following two terms:
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?
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 input consists of several test cases. The first line of each test case contains three integers M (0 < M <= 30), T (1 < T <= 1000) and N (0 < N <= M). Each of the following T lines contains M floating-point numbers in the range of [0,1]. In these T lines, 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
For each test case, please output the answer in a separate line. The result should be rounded to three digits after the decimal point.
Sample Input
2 2 20.9 0.91 0.90 0 0
Sample Output
0.972
Source
POJ Monthly,鲁小石
这道题目真是让人头疼,不可否认的是这题概率与dp有一个很好的结合。让人头疼的是条件概率的不断的正反向运用,很容易把人搞晕
#include <stdio.h>#include <string.h>#include <math.h>double a[1100][35][35];double val1[1100],val2[1100],p[1100][35];double res1,res2;int main(){ int i,j,n,m,s,t,x; while(scanf("%d %d %d",&n,&m,&t)!=EOF) { if(!n&&!m&&!t) { break; } for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { scanf("%lf",&p[i][j]); } } for(i=1;i<=m;i++) { val1[i]=1.0; for(j=1;j<=n;j++) { val1[i]=val1[i]*(1-p[i][j]); } val1[i]=1-val1[i]; } memset(a,0,sizeof(a)); for(i=1;i<=m;i++) { a[i][0][0]=1; for(j=1;j<=n;j++) { a[i][j][0]=a[i][j-1][0]*(1-p[i][j]); } } for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { for(x=1; x<=j;x++) { a[i][j][x]=(a[i][j-1][x-1]*p[i][j])+(a[i][j-1][x]*(1-p[i][j])); } } } for(i=1;i<=m;i++) { val2[i]=0; for(j=t;j<=n;j++) { val2[i]+=a[i][n][j]; } if(fabs(val1[i])>1e-7) { val2[i]=val2[i]/val1[i]; }else { val2[i]=0; } } res1=1.0; res2=1.0; for(i=1;i<=m;i++) { res1=res1*(1-val2[i]); res2=res2*val1[i]; } printf("%.3lf\n",(1-res1)*res2); } return 0;}
- poj 2151 Check the difficulty of problems
- POJ 2151 Check the difficulty of problems
- poj 2151 Check the difficulty of problems
- poj 2151 Check the difficulty of problems
- POJ 2151 Check the difficulty of problems
- POJ 2151 Check the difficulty of problems
- poj 2151 Check the difficulty of problems
- poj 2151 Check the difficulty of problems
- POJ 2151 Check the difficulty of problems
- POJ 2151 Check the difficulty of problems
- poj 2151 Check the difficulty of problems
- POJ 2151 Check the difficulty of problems
- 【POJ 2151】Check the difficulty of problems
- Check the difficulty of problems POJ 2151
- POJ 2151 Check the difficulty of problems
- POJ-2151 Check the difficulty of problems
- POJ 2151 Check the difficulty of problems
- POJ 2151 Check the difficulty of problems
- MySQL中Text, MeduimText, LongText在Hibernate中的设置
- PowerDesigner 15的破解方法
- 一个基于xml的超级orm框架-世界是由懒人创造的。
- MyEclipse生成Javadoc帮助文档
- linux下添加,删除,修改,查看用户和用户组
- POJ 2151 Check the difficulty of problems
- 运行shell:windows命令,及显示桌面.scf的问题
- bindService不能触发onServiceConnected方法
- UML 学习第一章
- 学习Opencv与MFC混合编程之---为播放AVI视频添加滑动条
- Python 笔记(1)input与raw_input
- freemarker学习记录
- 【OpenCV学习】抠图
- 如何搭建本地svn服务器