题目链接:http://codeforces.com/problemset/problem/442/B

题目大意:有n个人,第i个人出一道题的概率是pi,现在选出一个子集,使得这些人恰好出一个题的概率最大。问最大概率。

可以仿照背包问题来做,即每个人可问可不问。

f[i][j]代表从前i个人里问j个人所获得1个题的最大概率。

f[i][j] = max{ f[i-1][j], f[i-1][j-1]*(1-p[i])+z[i-1][j-1]*p[i] };

z[i][j]为从前i个人里问j个人所获得1个题的最大概率对应的一个题也出不出来的概率。

转移见代码

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <bitset>
#include <cmath>
#include <numeric>
#include <iterator>
#include <iostream>
#include <cstdlib>
#include <functional>
#include <queue>
#include <stack>
#include <string>
#include <cctype>
using namespace std;
#define PB push_back
#define MP make_pair
#define SZ size()
#define ST begin()
#define ED end()
#define CLR clear()
#define ZERO(x) memset((x),0,sizeof(x))
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
const double EPS = 1e-; int n;
double f[][],p[],z[][]; int main(){
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%lf",&p[i]);
for(int i=;i<;i++) z[][i] = z[i][] = 1.0;
for(int i=;i<=n;i++){
for(int j=;j<=i;j++){
// printf("i=%d,j=%d\n",i,j);
// printf("f[i-1][j]=%f,f[i-1][j-1]*(1-p[i])+z[i-1][j-1]*p[i]=%f\n",f[i-1][j],f[i-1][j-1]*(1-p[i])+z[i-1][j-1]*p[i]);
if( f[i-][j]<f[i-][j-]*(-p[i])+z[i-][j-]*p[i] ){
f[i][j] = f[i-][j-]*(-p[i])+z[i-][j-]*p[i];
z[i][j] = z[i-][j-]*(-p[i]);
} else {
f[i][j] = f[i-][j];
z[i][j] = z[i-][j];
}
}
}
double ans = ;
for(int i=;i<=n;i++){
ans = max(ans,f[n][i]);
}
printf("%.12f\n",ans);
return ;
}

[CF442B] Andrey and Problem (概率dp)的更多相关文章

  1. cf442B Andrey and Problem

    B. Andrey and Problem time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  2. BZOJ 2318: Spoj4060 game with probability Problem( 概率dp )

    概率dp... http://blog.csdn.net/Vmurder/article/details/46467899 ( from : [辗转山河弋流歌 by 空灰冰魂] ) 这个讲得很好 , ...

  3. BZOJ 2318: Spoj4060 game with probability Problem (概率dp)(博弈论)

    2318: Spoj4060 game with probability Problem Description Alice和Bob在玩一个游戏.有n个石子在这里,Alice和Bob轮流投掷硬币,如果 ...

  4. 【bzoj2318】Spoj4060 game with probability Problem 概率dp

    题目描述 Alice和Bob在玩一个游戏.有n个石子在这里,Alice和Bob轮流投掷硬币,如果正面朝上,则从n个石子中取出一个石子,否则不做任何事.取到最后一颗石子的人胜利.Alice在投掷硬币时有 ...

  5. Codeforces 513G1 513G2 Inversions problem [概率dp]

    转自九野:http://blog.csdn.net/qq574857122/article/details/43643135 题目链接:点击打开链接 题意: 给定n ,k 下面n个数表示有一个n的排列 ...

  6. Codeforces Round #253 Div2 D.Andrey and Problem 概率+贪心

    概率计算:P(某set) =  令:  和   现在考虑: 1.考虑某个集合,再加一个概率为Pi的朋友后能不能使总概率提高. 即: 由公式可知, 如果 S < 1,则delta > 0,则 ...

  7. 【BZOJ2318】【spoj4060】game with probability Problem 概率DP

    链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...

  8. LuoguP2523 [HAOI2011]Problem c(概率DP)

    傻逼概率\(DP\),熊大坐这,熊二坐这,两熊体积从右往左挤,挤到\(FFF\)没座位了就不合理了 否则就向左歇斯底里爬,每个\(FFF\)编号就组合一下,完闭 #include <iostre ...

  9. Andrey and Problem

    B. Andrey and Problem time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

随机推荐

  1. SQL语句---nvl 用法

    SQL语句---nvl 用法   一NVL函数是一个空值转换函数 NVL(表达式1,表达式2) 如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值. 该函数的目的是把一个空值(nul ...

  2. iptables基本规则

    注意:iptables只能被拥有超级权限的用户设置.   重启 清空 iptables 规则:在终端输入:   iptables -F iptables -X iptables -t nat -F i ...

  3. androidd 程序默认安装位置和数据存储位置(公用和私用)

    默认安装位置: android App 安装到外置SD卡中,缓解手机内置内存的压力: <manifest xmlns:android="http://schemas.android.c ...

  4. 在可以调用OLE之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute

    导入导出功能,在调用ShowDialog时的错误,解决办法如下: WinForm窗体的入口点: /// <summary> /// 应用程序的主入口点. /// </summary& ...

  5. ArrayList与普通数组的区别

    import java.util.ArrayList; public class Shuzuqubie { public static void main(String[] args){ String ...

  6. 记录一些容易忘记的属性 -- UIScrollView

    UIScrollView * sv = [[UIScrollView alloc] init]; //设置是否显示水平滚动条    sv.showsHorizontalScrollIndicator ...

  7. SVG 2D入门13 - svg对决canvas

    到目前为止,SVG与Canvas的主要特性均已经总结完毕了.它们都是HTML5中支持的2D图形展示技术,而且均支持向量图形.现在,我们就来比对一下这两种技术,分析一下它们的长处和适用场景.首先分析一下 ...

  8. codeforces 666A (DP)

    题目链接:http://codeforces.com/problemset/problem/666/A 思路:dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行,dp[i][1]表示第a ...

  9. Bundle

    [[NSBundle mainBundle] pathForResource:@"someFileName" ofType:@"yourFileExtension&quo ...

  10. video 与 audio

    Play方法:使用play方法来播放媒体,自动将元素的paused属性的值变为false.Pause方法:使用pause方法来暂停播放,自动将元素的paused属性的值变为true.Load方法:使用 ...