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

题意:T个队伍M条题目,给出每个队伍i的每题能ac的概率p[i][j],求所有队伍至少A掉1题且冠军至少A掉N题的概率(T<=1000, M<=30)

#include <cstdio>
#include <cstring>
using namespace std;
const int T=1005, M=35;
double d[T][M], p[T][M];
int n, m, N;
void clr() {
for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) d[i][j]=0;
}
int main() {
while(scanf("%d%d%d", &m, &n, &N), !(m==0&&n==0&&N==0)) {
for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) scanf("%lf", &p[i][j]);
for(int i=1; i<=n; ++i) d[i][0]=1;
for(int i=1; i<=n; ++i)
for(int k=1; k<=m; d[i][0]*=1-p[i][k], ++k)
for(int j=m; j; --j) d[i][j]=d[i][j]*(1-p[i][k])+d[i][j-1]*p[i][k];
//for(int i=1; i<=n; ++i) { for(int j=0; j<=m; ++j) printf("%.2f ", d[i][j]); puts(""); }
for(int i=1; i<=n; ++i) for(int j=m; j; --j) d[i][j]+=d[i][j+1];
double ans=0, sum;
for(int i=1; i<=n; ++i) {
sum=d[i][N];
for(int j=1; j<i; ++j) sum*=(d[j][1]-d[j][N]);
for(int j=i+1; j<=n; ++j) sum*=d[j][1];
ans+=sum;
}
printf("%.3f\n", ans);
clr();
}
return 0;
}

  

我们只需要设状态就行了= =随便搞...

设f[i][j][k]表示第i队解决j~k个问题的概率

$$ans=\sum_{i} \left( f[i][N][M] * \prod_{j<i} f[j][1][N-1] * \prod_{j>i} f[j][1][M] \right) $$

这样就能不重不漏....(不难理解,我觉得这个很简单的吧= =

然后我们来一发前缀和,d[i][j]表示第i队解决至少j个问题的概率

$$ans=\sum_{i} \left( d[i][N] * \prod_{j<i} ( d[j][1]-d[j][N] ) * \prod_{j>i} d[j][1] \right) $$

问题转化为如何求d[i][j]...

设d'[i][j]表示第i队解决j个问题的概率

我们类似背包依次加入每个问题,有

d[i][j]=d[i][j]*(1-p[i][k])+d[i][j-1]*p[i][k](自己好好思考= =,我拐了好多个弯才想出来QAQ

于是就ok了。。。

最新文章

  1. design包 TabLayout使用
  2. AJAX-创建XMLHttpRequest对象
  3. 快学Java NIO 续篇
  4. css 布局absolute与relative的区别
  5. Java之蛋疼的file Protocol
  6. 【原创】PostSharp入门笔记
  7. 用jq 做了一个排序
  8. 窗口 对话框 Pop Dialog 示例
  9. 客户Oracle数据库在插入数据的时候报超出最大长度的错误(规避风险)
  10. Group by Grouping
  11. 谈JS中的作用域链与原型链(1)
  12. SLF4J源码解析-LoggerFactory(一)
  13. selenium--键盘事件
  14. window下为kibana安装x-pack时候出现Plugin installation was unsuccessful due to error &quot;No valid url specified.&quot;错误的解决方案
  15. RabbitMQ的应用场景以及基本原理简介
  16. 用js实现博客打赏功能
  17. gdb 拾遗
  18. navicat mysql导出数据 批量插入的形式
  19. jquery实现的个人中心导航菜单
  20. PY安装模块

热门文章

  1. .net学习之泛型、程序集和反射
  2. OCJP(1Z0-851) 模拟题分析(二)over
  3. poj 1002:487-3279(水题,提高题 / hash)
  4. BI 项目管理之生命周期跟踪和任务区域
  5. (译)【Unity教程】使用Unity开发Windows Phone上的横版跑酷游戏
  6. C 和 C++ 混合代码 cmath编译出错
  7. 处理FF margin-top下降问题
  8. Hibernate的核心API
  9. minix3(一)安装以及编辑文件
  10. 在Android上用AChartEngine轻松绘制图表