zoukankan      html  css  js  c++  java
  • POJ2157 Check the difficulty of problems 概率DP

    http://poj.org/problem?id=2151

     
    题意 :t个队伍m道题,i队写对j题的概率为pij。冠军是解题数超过n的解题数最多的队伍之一,求满足有冠军且其他队伍解题数都大于等于1的概率。
     
    f[i][j][w]表示i队到第j题总共解出w道题的概率.
    为了避免重复计数;
    pa=所有队伍到最后一道题时的解题数都大于1的概率;
    pb=所有队伍到最后一道题时解题数都小于n的概率;
    答案为pa-pb.
     
    代码如下
     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<queue>
     7 using namespace std;
     8 const int maxn=1010;
     9 const double eps=1e-8;
    10 const int modn=998244353;
    11 int m,n,t;
    12 double f[maxn][35][35]={};
    13 double f1[maxn][35]={};
    14 double a[maxn][35];
    15 int main(){
    16     while(~scanf("%d%d%d",&m,&t,&n)){
    17         memset(f,0,sizeof(f));
    18         if(m==0&&n==0&&t==0)break;
    19         for(int i=1;i<=t;i++){
    20             for(int j=1;j<=m;j++){
    21                 scanf("%lf",&a[i][j]);
    22             }
    23         }
    24         double t1=1,t2=1,t3,t4;
    25         for(int i=1;i<=t;i++){
    26             f[i][0][0]=1;
    27             for(int j=1;j<=m;j++){
    28                 for(int w=0;w<=j;w++){
    29                     if(j-1>=w)f[i][j][w]+=f[i][j-1][w]*(1.0-a[i][j]);
    30                     f[i][j][w]+=f[i][j-1][w-1]*a[i][j];
    31                 }
    32             }
    33             t3=0,t4=0;
    34             for(int j=1;j<=m;j++){
    35                 t3+=f[i][m][j];
    36                 if(j<n){
    37                     t4+=f[i][m][j];
    38                 }
    39             }
    40             t1*=t3;t2*=t4;
    41         }
    42         printf("%.3f
    ",t1-t2);
    43     }
    44     return 0;
    45 }
    View Code
  • 相关阅读:
    数模竞赛-长三角旅游路线
    数模培训-高压油管
    数模培训-城市表层土壤重金属污染问题
    数模练习-养孩子
    SpringBoot01
    搬家啦
    P4655 [CEOI2017]Building Bridges
    深入理解斜率优化
    暴力 K 短路的一个小细节
    搜索优化
  • 原文地址:https://www.cnblogs.com/137shoebills/p/7786520.html
Copyright © 2011-2022 走看看