主要的子问题是每一个队伍有一个做出题目的概率,求做出k个题目的概率。简单的简单的组合数DP。想清楚即可。

   1:  #include <iostream>
   2:  #include <cstdio>
   3:  #include <cstring>
   4:  using namespace std;
   5:   
   6:  double dp[35][35];
   7:  double p[1005][35];
   8:  int main()
   9:  {
  10:  //    freopen("1.txt","r",stdin);
  11:      int M,T,N;
  12:      while(cin>>M>>T>>N && M!=0)
  13:      {
  14:          memset(p, 0, sizeof(p));
  15:          memset(dp, 0, sizeof(dp));
  16:          for(int i=0; i<T; i++)
  17:          {
  18:              for(int j=0; j<M; j++)
  19:                  cin>>p[i][j];
  20:          }
  21:          double ans = 1.0;
  22:          for(int i=0; i<T; i++)
  23:          {
  24:   
  25:              double ret = 1.0f;
  26:              for(int j=0; j<M; j++)
  27:                  ret *= (1-p[i][j]);
  28:              ret  = 1 - ret;
  29:              ans *= ret;
  30:          }
  31:          double ant = 1.0f;
  32:          for(int i=0; i<T; i++)
  33:          {
  34:              // first i solved num is j
  35:              memset(dp, 0, sizeof(dp));
  36:              dp[1][0] = 1- p[i][0];
  37:              dp[1][1] = p[i][0];
  38:              for(int j=2; j<=M; j++) dp[j][0] = dp[j-1][0] * (1 - p[i][j-1]);
  39:              for(int j=2; j<= M; j++)
  40:              {
  41:                  for(int k = 1; k<=j; k++)
  42:                  {
  43:                      dp[j][k] = dp[j-1][k-1]*(p[i][j-1])+ dp[j-1][k]*(1 - p[i][j-1]);
  44:                  }
  45:              }
  46:              double sum = 0.0f;
  47:              for(int i=1; i<N; i++)
  48:                  sum += dp[M][i];
  49:              ant *= sum;
  50:          }
  51:          printf("%.3f\n", ans - ant);
  52:      }
  53:      return 0;
  54:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

POJ 2151 概率DP的更多相关文章

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

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

  2. poj 2151 概率DP(水)

    Check the difficulty of problems Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5750   ...

  3. POJ 2096 (概率DP)

    题目链接: http://poj.org/problem?id=2096 题目大意:n种bug,s个子系统.每天随机找一个bug,种类随机,来自系统随机.问找齐n种bug,且每个子系统至少有一个bug ...

  4. POJ 3701 概率DP

    给定2^n 支足球队进行比赛,n<=7. 队伍两两之间有一个获胜的概率,求每一个队伍赢得最后比赛的概率是多少? 状态其实都是很显然的,一开始觉得这个问题很难啊,不会.dp[i][j] 表示第i支 ...

  5. Scout YYF I POJ - 3744(概率dp + 矩阵快速幂)

    题意: 一条路上有n个地雷,你从1开始走,单位时间内有p的概率走一步,1-p的概率走两步,问安全通过这条路的概率 解析: 很容易想到 dp[i] = p * dp[i-1] + (1 - p) * d ...

  6. poj 3071 概率dp

    转自:cxlove 题目:有2^n个队,相邻的两两打淘汰赛,,求最后哪个队夺冠的概率最大 dp[i][j]表示第i轮的时候,第j去支队伍赢的概率. 那么dp[i][j]的前提就是i-1轮的时候,j是赢 ...

  7. poj 3744 概率dp+矩阵快速幂

    题意:在一条布满地雷的路上,你现在的起点在1处.在N个点处布有地雷,1<=N<=10.地雷点的坐标范围:[1,100000000]. 每次前进p的概率前进一步,1-p的概率前进1-p步.问 ...

  8. poj - 2096 概率dp (找bug)

    题意:一个人一天只能找1个bug ,这个bug属于s个子系统中的某一个子系统,属于n种bug 中的某一种 ,求 这个人找出n种bug ,并且s个系统都bug的期望 (每个系统的一定可以找出bug) 一 ...

  9. poj 3744 概率dp 快速幂 注意排序 难度:2

    /* Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5304   Accepted: 1455 De ...

随机推荐

  1. javaweb学习总结五(内省、beanUtils工具包)

    一:内省的概念 1:内省是反射的一种特例,由于在反射中频繁的操作javabean,所以为了方便反射 javabean,sun公司开发出一套API提高效率. 2:javaBean,就是用来封装客户端请求 ...

  2. [转]Asp.Net MVC 扩展联想控件

    本文转自:http://www.cnblogs.com/bright-lin/archive/2013/02/06/MVC_SuggestBox.html 在web中,为改善用户体验,我们常会将一些文 ...

  3. [改善Java代码]强制声明泛型的实际类型

    Arrays工具类有一个方法asList可以把一个变长参数或数组变成列表,但是它有一个缺点:它所生成的List长度是不可改变的,而这在我们的项目开发中很不方便. import java.util.Ar ...

  4. HTML的style属性

    HTML的style属性 HTML的style属性提供了一种改变HTML样式的通用方法.style是在HTML4版本中引用的,它是一种首选的改变HTML元素样式的方法.可以使用style直接的将样式添 ...

  5. 转:艾瑞咨询2016 IM云的发展趋势

    转自: http://www.cnblogs.com/lingyunhu/p/rtc63.html

  6. 【XMLRPC实现跨语言编程】Tcl <----> python

    转载请声明出处,谢谢合作. # 期望一种能实现tcl.python两者解释器能双向通讯的结合体# py->tcl: from Tkinter import Tcl; tcl = Tcl(); t ...

  7. Android--简单的三级菜单

      关于这个菜单应该在很多播放器应用里面可以看见,直接先上两张效果图吧,一张是该Demo的效果图,一张是优酷手机客户端的效果图.                                     ...

  8. 利用ExpandableListView和gridview 显示可展开折叠菜单导航

    这篇随身笔带来的是结合聚合数据“菜谱大全”做的一个菜谱可折叠一级+二级列表. 先发来一些截图一睹为快吧. ExpandableListView 可用于折叠型菜单列表,其布局主要通过getGroupVi ...

  9. 检测SqlServer服务器内存是否瓶颈

    性能监视器临视以下数据: Memory->Available MBytes  可用的内存  windows系统不低于1G,如果可用内存不多,则系统要求sqlserver释放内存 Paging F ...

  10. ASP.NET WEB API 初探

    本文初步介绍如何简单创建一个ASP.NET Web Api 程序. Web Api 顾名思义就是一个Api接口,客户端可调用此接口进行业务操作.此类应用与 ASP.NET  web服务(即使用扩展名. ...