$HDU$ 4336 $Card\ Collector$ 概率$dp$/$Min-Max$容斥
正解:期望
解题报告:
先放下题意,,,已知有总共有$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$
随机推荐
- @NOIP2018 - D2T1@ 旅行
目录 @题目描述@ @题解@ @代码@ @题目描述@ 小 Y 是一个爱好旅行的 OIer.她来到 X 国,打算将各个城市都玩一遍. 小Y了解到, X国的 n 个城市之间有 m 条双向道路.每条双向道路 ...
- 2018-2-13-WPF-获得触笔悬停元素上
title author date CreateTime categories WPF 获得触笔悬停元素上 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:2 ...
- @hdu - 6428@ Problem C. Calculate
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 A, B, C,求: \[\sum_{i=1}^{A}\s ...
- uni-app原生导航栏使用iconfont图标
在 iconfont 将图标下载之后,会有一个 .ttf 后缀的文件 把它放进 static 文件夹里 然后打开在iconfont下载的 demo_index.html 文件 选择 Unicode ...
- uni-app禁止滑动穿透
<view class="topWrapper" v-show="chooseShow" @click="chooseShow = false& ...
- Ubuntu 开机自动挂载磁盘
Ubuntu 磁盘挂载 1.使用命令查看分区 sudo fdisk -l 1 可以根据上图提供的磁盘信息确定想挂载的磁盘,以及确定挂载的位置. 我此次的目的是将/dev/sda2 磁盘挂载到/mnt/ ...
- hdu 1548 A strange lift(迪杰斯特拉,邻接表)
A strange lift Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- H3C 面向连接和无连接的服务
- tp5 select出来数据集(对象)转成数组
1.先在数据库配置文件中 //数据集返回类型 'resultset_type' => 'collection', 2.在使用时, 使用 toArray() 方法 //查询数据库 $news = ...
- P1073 奇数还是偶数
题目描述 给你 \(N(1 \le N \le 1000)\) 个数,你需要判断每个数是奇数还是偶数. 输入格式 输入的第一行包含一个整数 \(N(1 \le N \le 1000)\) . 接下来 ...