正解:期望

解题报告:

传送门!

先放下题意,,,已知有总共有$n$张卡片,每次有$p_i$的概率抽到第$i$张卡,求买所有卡的期望次数

$umm$看到期望自然而然想$dp$?

再一看,哇,$n\leq 20$,那不就,显然考虑状压$dp$?

转移也很$easy$鸭,设$f_{s}$表示已经获得的卡片状态为$s$时候的期望次数

不难得到转移方程,$f_s=\sum_{i\notin{S}}f_{s|\{i\}}\cdot p_i+(1-\sum_{i\notin{S}}p_i)\cdot f_s+1$

(挺显然的就只瞎解释下,,,就状态是$s$之后,再抽一次,有可能抽到需要的$i$,就是$f_{s|\{i\}}\cdot p_i$,也可能没抽到需要的$i$,就是$(1-\sum_{i\notin{S}}p_i)\cdot f_s$,然后不管抽没抽到反正都抽了一次所以还要+1,就$over$辣!

变形下就是$\sum_{i\notin{S}}p_i\cdot f_s=\sum_{i\notin{S}}f_{s|\{i\}}\cdot p_i+1$

再除过去就$get$了$f$的转移方程辣

然后就做完辣,,,?

放下代码趴$QwQ$

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i) const int N=;
int n,tot;
double f[<<N],p[N]; int main()
{
while(scanf("%d",&n)!=EOF)
{
rp(i,,n-)scanf("%lf",&p[i]);
tot=(<<n)-;f[tot]=;
my(i,tot-,)
{
double sum=;f[i]=;
rp(j,,n-)if(~i&(<<j))f[i]+=p[j]*f[i|(<<j)],sum+=p[j];
f[i]=(f[i]+)/sum;
}
printf("%.4lf\n",f[]);
}
return ;
}

昂对了,$attention$,这题$Sample Output$是三位小数嘛,但是$output$里说了,当相差小于等于1$e$-4的时候是可以接受的,也就是说输出要保留到四位小数昂$QwQ$!

$upd$:

$get$了一个神奇的容斥,,,$orzorz$神仙$hl$

尝试自己理解了下结果好像失败辽,,,

先写下结论

就,$min-max$容斥中提出了这样一个式子:$E(\max\{x_1,x_2...x_n\})=\sum_{S}(-1)^{|S|+1}E(\min_{i\in{S}}\{x_i\})$

然后此处如果定义$x_i$表示第$i$张牌第一次出现的轮号,那其实就相当于这个$ E(\max\{x_1,x_2...x_n\})$指的就是最后的$ans$了

然后又有$\min_{i\in{S}}x_i=\frac{1}{\sum_{i\in{S}}p_i}$

然后用$dfs$枚下子集

就做完辣,,,?复杂度要好看很多呢$QwQ$

(神仙$hl$手推出了$min-max$容斥,,,太神了%%%

$code$就不放了知道思想的话具体实现还是挺$easy$的,有兴趣的去神仙$hl$的博客看趴,,,$QAQ$

昂然后关于这个$min-max$容斥,,,$gql$可能会尝试瞎证下$QwQ$,,,大概会新开篇博客,等下写完放链接趴$QAQ$←对不起咕了$TT$

随机推荐

  1. 21Hash算法以及暴雪Hash

    一:哈希表简介 哈希表是一种查找效率极高的数据结构,理想情况下哈希表插入和查找操作的时间复杂度均为O(1),任何一个数据项可以在一个与哈希表长度无关的时间内计算出一个哈希值(key),然后在常量时间内 ...

  2. @codeforces - 1205E@ Expected Value Again

    目录 @description@ @solution@ @part - 1@ @part - 2@ @part - 3@ @solution@ @details@ @description@ 给定两个 ...

  3. 网站域名加WWW与不加WWW区别

    不知道站长童鞋们有没有注意到,很多网站在打开时,地址栏里的域名有的带有“www.”,而有的网站前面则没有带“www.”这其中有什么区别呢?作为一个新站长,我什么都不懂,就在百度上搜了一艘,也没找到一个 ...

  4. 在SpringBoot中使用JWT

    JWT简介 简介 JSON Web token简称JWT, 是用于对应用程序上的用户进行身份验证的标记.也就是说, 使用 JWTS 的应用程序不再需要保存有关其用户的 cookie 或其他sessio ...

  5. 解决 VS 跳转定义和 Resharper 重复

    在大约一周之前,Visual Studio 进行了一项更新,增加了 Ctrl+Click 点击跳转到定义的功能.这项功能与 ReSharper 重复了. 于是可以通过关闭其中一个跳转定义可以使用. V ...

  6. iptables禁止icmp端口

    除192.168.62.1外,禁止其它人ping我的主机 #iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-ty ...

  7. JS划重点——类和对象的不正经阐述

    JS划重点--类和对象的不正经阐述 /在JS 类里面函数也是一个对象,那么要创建一个对象就需要一个类,这个类可以由这个对牛逼的对象-函数来实现/ /首先是普罗大众都会的 工厂模式来创建一类/ func ...

  8. 精选Pycharm里6大神器插件

    http://www.sohu.com/a/306693644_752099 上次写了一篇关于Sublime的精品插件推荐,有小伙伴提议再来一篇Pycharm的主题.相比Sublime,Pycharm ...

  9. 洛谷P1449 后缀表达式 题解 栈

    题目链接:https://www.luogu.org/problem/P1449 这道题目我们只需要开一个栈,每次读取到一个数的话就将这个数 push 进栈. 因为提供给我们的时候已经是一个后续序列了 ...

  10. H3C 帧中继与水平分割