题目链接:

https://vjudge.net/problem/POJ-2151

题目大意:

ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率

问 每队至少解出一题且冠军队至少解出N道题的概率。

解题思路:

看了题解才恍然大悟,还是做题少没思路。

要求:每队至少解出一题 且 冠军队至少解出N道题的概率

由于冠军队可以不止一队,即允许存在并列冠军

则原来的所求的概率可以转化为:

每队均至少做一题的概率P1 减去 每队做题数均在1到N-1之间的概率P2

注意初始条件,其他递推即可

 #include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn = ;
double p[maxn][];//p[i][j]表示第i个队做出第j题的概率
double dp[maxn][][];//dp[i][j][k]表示第i个队前j道题做出k题的概率
double sum[maxn][];//sum[i][j]表示第i个队伍做出至多k题的概率(前缀和)
int main()
{
int n, m, t;
while(cin >> m >> t >> n && m)
{
for(int i = ; i <= t; i++)
{
for(int j = ; j <= m; j++)
cin >> p[i][j];
}
memset(dp, , sizeof(dp));
memset(sum, , sizeof(sum));
for(int i = ; i <= t; i++)
{
dp[i][][] = p[i][];
dp[i][][] = 1.0 - p[i][];
for(int j = ; j <= m; j++)
{
for(int k = ; k <= j; k++)
{
dp[i][j][k] = dp[i][j - ][k] * ( - p[i][j]) + dp[i][j - ][k - ] * p[i][j];
}
}
}
for(int i = ; i <= t; i++)
{
sum[i][] = dp[i][m][];
for(int j = ; j <= m; j++)
sum[i][j] = sum[i][j - ] + dp[i][m][j];
}
double p1 = , p2 = ;
//p1表示所有队伍至少做出1题的概率
//p2表示所有队伍做题数目在1-n-1之间
for(int i = ; i <= t; i++)
p1 *= (sum[i][m] - sum[i][]),
p2 *= (sum[i][n - ] - sum[i][]);
printf("%.3f\n", p1 - p2);
}
}

POJ-2151 Check the difficulty of problems---概率DP好题的更多相关文章

  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 ...

  2. [ACM] POJ 2151 Check the difficulty of problems (概率+DP)

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

  3. POJ 2151 Check the difficulty of problems (概率DP)

    题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 ,求每队至少解出一题且冠军队至少解出N道题的概率. 析:概率DP,dp[i][j][k] 表示第 i 个队伍,前 j 个题,解出 ...

  4. POJ 2151 Check the difficulty of problems (动态规划-可能DP)

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

  5. POJ 2151 Check the difficulty of problems

    以前做过的题目了....补集+DP        Check the difficulty of problems Time Limit: 2000MS   Memory Limit: 65536K ...

  6. poj 2151 Check the difficulty of problems(概率dp)

    poj double 就得交c++,我交G++错了一次 题目:http://poj.org/problem?id=2151 题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 问 ...

  7. POJ 2151 Check the difficulty of problems:概率dp【至少】

    题目链接:http://poj.org/problem?id=2151 题意: 一次ACM比赛,有t支队伍,比赛共m道题. 第i支队伍做出第j道题的概率为p[i][j]. 问你所有队伍都至少做出一道, ...

  8. POJ 2151 Check the difficulty of problems (概率dp)

    题意:给出m.t.n,接着给出t行m列,表示第i个队伍解决第j题的概率. 现在让你求:每个队伍都至少解出1题,且解出题目最多的队伍至少要解出n道题的概率是多少? 思路:求补集. 即所有队伍都解出题目的 ...

  9. [POJ2151]Check the difficulty of problems (概率dp)

    题目链接:http://poj.org/problem?id=2151 题目大意:有M个题目,T支队伍,第i个队伍做出第j个题目的概率为Pij,问每个队伍都至少做出1个题并且至少有一个队伍做出N题的概 ...

  10. POJ2157 Check the difficulty of problems 概率DP

    http://poj.org/problem?id=2151   题意 :t个队伍m道题,i队写对j题的概率为pij.冠军是解题数超过n的解题数最多的队伍之一,求满足有冠军且其他队伍解题数都大于等于1 ...

随机推荐

  1. django终端打印Sql语句

    LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBU ...

  2. SUSE12Sp3安装配置.net core 生产环境(2)-安装.NET Core 2.2.1 runtime 并运行.NET代码

    1.安装libicu依赖 1.在线安装 sudo mkdir /usr/local/dotnet #创建目录 cd /usr/local/dotnet sudo wget https://downlo ...

  3. java——多线程的实现方式、三种办法解决线程赛跑、多线程数据同步(synchronized)、死锁

    多线程的实现方式:demo1.demo2 demo1:继承Thread类,重写run()方法 package thread_test; public class ThreadDemo1 extends ...

  4. java——重载解析、静态绑定、动态绑定

    重载解析: a被声明为A类型的对象,调用method()方法时,如果有多个同名方法,参数不同,编译器将列举所用类A的method()方法和所用父类中public类型的method()方法,编译器查看这 ...

  5. SQL SERVER – Configuration Manager – Cannot Connect to WMI Provider. You Do Not Have Permission or The Server is Unreachable

    打开SQL SERVER Configuarion Manger 出现以下错误 SQL Server Configuration Manager—————————Cannot connect to W ...

  6. js学习笔记 -- 随记

    js不区分整数和浮点数,统一用Number表示, js'=='比较会自动转换类型,会产生奇怪结果,'==='不会转换比较类型,如果不一致返回false,因此js判断始终用'===' `` 保留换行,也 ...

  7. accept 和 connect API深入 重点accept阻塞和非阻塞问题学习

    https://www.cnblogs.com/zhangkele/p/10284234.html

  8. win10电脑的USB接口插上U盘以后不能使用?

    今天刚遇到的问题 解决方法如下: 右击“我的电脑”选“属性”,打开“设备管理器”,双击“通用串行总线控制器”,双击任意一个,打开属性对话框,切换到“电源管理”选项卡,去除“允许计算机关闭这个设备以节约 ...

  9. java lamda

    // 查询数据模拟 List<SealListViewVo> list = new ArrayList<SealListViewVo>(); for (int i = 0; i ...

  10. std::map Intro

    #include <queue>#include <map>#include <iostream>#include <string.h> class T ...