正解:期望

解题报告:

传送门!

先放下题意,,,已知有总共有$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. BUAA 169 电话费

    http://oj55.bianchengla.com/problem/169/ 还有这个,不怎么好做,最后用栈做出来了. 感觉比较有用的一个数据是: 10 3 1010101010 代码如下: #i ...

  2. HZOJ 辣鸡(ljh)

    题解?noipT1还需要题解?正解就是$n^2$大暴力. 考试的时候打了$n^2$的暴力,也想到了正解的优化,然而觉得它太麻烦了,而且$n^2$怎么优化也过不了50000啊,而且即使不优化前面30分我 ...

  3. HZOJ 光

    一道大模拟,打的我要吐了. 先说一下60%暴力吧,其实模拟光的路线即可,最好还是把边界设为障碍,这样就不用判边界了.最后输出n*m可以骗到10分. 注意不要把n和m弄混(愁死我了). #include ...

  4. 2018-7-29-C#-强转会不会抛出异常

    title author date CreateTime categories C# 强转会不会抛出异常 lindexi 2018-7-29 14:24:1 +0800 2018-4-4 16:24: ...

  5. Refs

    一.The ref callback attribute ref:reference,父组件引用子组件 组件并不是真实的 DOM节点,而是存在于内存之中的一种数据结构,叫做虚拟DOM.只有当它插入文档 ...

  6. Ubuntu 开机自动挂载磁盘

    Ubuntu 磁盘挂载 1.使用命令查看分区 sudo fdisk -l 1 可以根据上图提供的磁盘信息确定想挂载的磁盘,以及确定挂载的位置. 我此次的目的是将/dev/sda2 磁盘挂载到/mnt/ ...

  7. web项目的文件上传和 下载

    文件上传和下载在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用Java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件 ...

  8. H3C 802.11无线网络的介质访问控制

  9. HTML的基本结构和标签分类

    HTML:超文本标记语言 HTML基本结构 <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...

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

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