传送门

##解题思路
  第一种方法是状压$dp$,设$f(S)$为状态$S$到取完的期望步数,那么$f(S)$可以被自己转移到,还可以被$f(S|(1<<i))$转移到,$i$为$S$中没有的一个元素。
  第二种方法是$Min-Max$反演,要求的其实就是$max(S)$,反演得$max(S)=\sum\limits_{T\subseteq S}min(T)$,而$min(T)=\sum p(i)$($i$是$T$的子集)。

##代码
状压

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib> using namespace std;
const int N=20; int n;
double p[N+2],ans,f[(1<<N)+2]; int main(){
while(~scanf("%d",&n)){
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++) scanf("%lf",&p[i]);
for(int S=(1<<n)-2;~S;S--){
double sum=0,now=0;
for(int j=1;j<=n;j++)
if(!((1<<(j-1))&S)) now+=p[j],sum+=p[j]*f[S|(1<<(j-1))];
f[S]=sum/now+1/now;
}
printf("%.5lf\n",f[0]);
}
return 0;
}

$Min-Max$反演

#include<iostream>
#include<cstdio>
#include<cstdlib> using namespace std;
const int N=22; int n;
double ans,p[N]; int main(){
while(~scanf("%d",&n)){
ans=0;
for(int i=1;i<=n;i++) scanf("%lf",&p[i]);
for(int S=1;S<(1<<n);S++){
int cnt=0;double now=0;
for(int i=1;i<=n;i++)
if(S&(1<<(i-1))) cnt++,now+=p[i];
if(cnt&1) ans+=1/now;
else ans-=1/now;
}
printf("%.7lf\n",ans);
}
return 0;
}

hdu 4336 Card Collector(状压dp/Min-Max反演)的更多相关文章

  1. HDU 4336——Card Collector——————【概率dp】

    Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  2. hdu 4336 Card Collector (概率dp+位运算 求期望)

    题目链接 Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  3. HDU 4336 Card Collector:期望dp + 状压

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意: 一共有n种卡片.每买一袋零食,有可能赠送一张卡片,也可能没有. 每一种卡片赠送的概率为p ...

  4. hdu 3247 AC自动+状压dp+bfs处理

    Resource Archiver Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Ot ...

  5. hdu 2825 aC自动机+状压dp

    Wireless Password Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  6. HDU 4336 Card Collector 期望dp+状压

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4336 Card Collector Time Limit: 2000/1000 MS (Java/O ...

  7. $HDU$ 4336 $Card\ Collector$ 概率$dp$/$Min-Max$容斥

    正解:期望 解题报告: 传送门! 先放下题意,,,已知有总共有$n$张卡片,每次有$p_i$的概率抽到第$i$张卡,求买所有卡的期望次数 $umm$看到期望自然而然想$dp$? 再一看,哇,$n\le ...

  8. hdu 4856 Tunnels (bfs + 状压dp)

    题目链接 The input contains mutiple testcases. Please process till EOF.For each testcase, the first line ...

  9. HDU 5765 Bonds(状压DP)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5765 [题目大意] 给出一张图,求每条边在所有边割集中出现的次数. [题解] 利用状压DP,计算不 ...

随机推荐

  1. [CF1161F]Zigzag Game

    通过这道模板题学了一种新的模型,记录一下. 稳定婚姻匹配 至于这道题,显然是一个二分图博弈的模型.考虑选择Bob,我们要找一组匹配使得任何情况下Bob都有匹配边能走.不失一般性假设Alice选择了in ...

  2. BUUCTF | [HCTF 2018]admin

    首先爬一遍整个网站,发现有没注册的时候有“login”,"register",这两个页面,注册一个123用户登录后发现有 "index“,”post“,”logout“, ...

  3. CTF | bugku | 字符?正则?

    做题链接 一个详细讲正则的网址1 一个详细讲正则的网址2 代码如下 <?php highlight_file('2.php'); $key='KEY{********************** ...

  4. 20175120彭宇辰 《Java程序设计》第十周学习总结

    教材内容总结 十二章 Java多线程机制 一.进程与线程.操作系统与进程 -线程不是进程,是比进程更小的执行单位.但与进程不同的是,线程的中断和恢复可以更加节省系统的开销. -线程可以共享进程中的某些 ...

  5. (转)JVM运行时数据区

    转:http://www.cnblogs.com/myna/p/7567208.html java虚拟机运行时数据区,具体分为如下几个区域 程序计数器(Program Counter Register ...

  6. 测开之路四十三:ajax请求

    ajax固定套路 function http(url, data, method, success, fail) { data = method == 'GET' ? data : JSON.stri ...

  7. 解决 ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

    原文链接:https://blog.csdn.net/sea_snow/article/details/82498791 感谢原作者大大  提示:ERROR 1044 (42000): Access ...

  8. css 样式小窍门

    css 样式小窍门 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  9. (DP)HDU - 1003 Max Sum

    这是一道DP入门题目,知识点是“最大连续子序列” 题目大意:给你一个长度为n的数字序列,取其中一段连续的序列,要求和最大: 分析:这是一道裸题,没有什么花里胡哨的东西,主要是写出状态转移方程 dp[i ...

  10. 43.Word Break(看字符串是否由词典中的单词组成)

    Level:   Medium 题目描述: Given a non-empty string s and a dictionary wordDict containing a list of non- ...