HDU 4336 Card Collector [概率DP]

[HDU4336]Card Collector(概率DP and 概率容斥)(过程详解) 这是我这两类题目的第一次尝试 我会对过程进行详解 剖析题意: 意思就是你吃干脆面集卡片, 多组数据,每组数据,给定n种卡片,以及开到每一种卡片的概率。 求开到所有卡片的期望次数。 方法一:概率dp 最后是(fs+1) 首先n<=20,又是集到或没集到,看得出来状态压缩Dp的雏形: 我习惯顺推,情况的表示可能与常见表示方式不一(但希望大家,包括我自己,习惯倒推,因为顺推概... 阅读详情

Description

In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people in the famous novel Water Margin, you will win an amazing award. 

As a smart boy, you notice that to win the award, you must buy much more snacks than it seems to be. To convince your friends not to waste money any more, you should find the expected number of snacks one should buy to collect a full suit of cards.
 

Input

The first line of each test case contains one integer N (1 <= N <= 20), indicating the number of different cards you need the collect. The second line contains N numbers p1, p2, ..., pN, (p1 + p2 + ... + pN <= 1), indicating the possibility of each card to appear in a bag of snacks. 

Note there is at most one card in a bag of snacks. And it is possible that there is nothing in the bag.
 

Output

Output one number for each test case, indicating the expected number of bags to buy to collect all the N different cards. 

You will get accepted if the difference between your answer and the standard answer is no more that 10^-4.

题意:

每天你吃一包零食,零食中可能会出现一张收集卡片,卡片共N张,第I张出现的概率为Pi,ΣPi<=1,保证一包零食中最多只有一张卡片(可能没有),问收集完所有卡片的期望天数。

范围:

N<=20

解法:

N为20,很容易发现需要状压,然后进行概率DP求解。

设DP[state]表示当前已收集状态为state的卡片,收集剩下的卡片的期望天数为DP[state],显然,边界为DP[(1<<n)-1]=0,目标为DP[0]

枚举当天打开的卡片为K,如果K是已经得到过的,记这部分的概率和为P0

转移方程: DP[state] = ( Σ(DP[ state | (1<<x) ] * Px) +1 )/ (1-P0) 这里的x表示当前状态没有得到过的卡片标号,之所以除以1-P0,是因为移项的结果

代码:

实现使用了记忆化搜索

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<iostream>
#include<stdlib.h>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<bitset>
#pragma comment(linker, "/STACK:1024000000,1024000000")
template <class T>
bool scanff(T &ret){ //Faster Input
    char c; int sgn; T bit=0.1;
    if(c=getchar(),c==EOF) return 0;
    while(c!='-'&&c!='.'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-')?-1:1;
    ret=(c=='-')?0:(c-'0');
    while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
    if(c==' '||c=='\n'){ ret*=sgn; return 1; }
    while(c=getchar(),c>='0'&&c<='9') ret+=(c-'0')*bit,bit/=10;
    ret*=sgn;
    return 1;
}
#define inf 1073741823
#define llinf 4611686018427387903LL
#define PI acos(-1.0)
#define lth (th<<1)
#define rth (th<<1|1)
#define rep(i,a,b) for(int i=int(a);i<=int(b);i++)
#define drep(i,a,b) for(int i=int(a);i>=int(b);i--)
#define gson(i,root) for(int i=ptx[root];~i;i=ed[i].next)
#define tdata int testnum;scanff(testnum);for(int cas=1;cas<=testnum;cas++)
#define mem(x,val) memset(x,val,sizeof(x))
#define mkp(a,b) make_pair(a,b)
#define findx(x) lower_bound(b+1,b+1+bn,x)-b
#define pb(x) push_back(x)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;


#define lowbit(x) (x&(-x))
#define NN 100100

int n,tot;
double p[111];
double dp[1080000];
bool vis[1080000];
double dfs(int state){
    if(state==tot)return 0;
    if(vis[state])return dp[state];
    vis[state]=1;
    double rp=1.0;
    dp[state]=1.0;
    rep(i,0,n-1){
        if((state&(1<<i))==0){
            rp-=p[i];
            dp[state]+=p[i]*dfs(state|(1<<i));
        }
    }
    dp[state]/=(1.0-rp);
    return dp[state];
}
int main(){
    while(scanf("%d",&n)!=EOF){
        rep(i,0,n-1)scanff(p[i]);
        tot=(1<<n)-1;
        rep(i,0,tot)vis[i]=0;
        double ans=dfs(0);
        printf("%.8lf\n",ans);
    }
    return 0;
}









Mac上Office合法安装与激活全指南:2021/2024/M365区别解析 Office是微软办公套件的核心产品,其在macOS平台的部署逻辑与Windows截然不同——不依赖传统密钥激活,而是基于Microsoft账户与设备标识的云端绑定机制。理解这一原理,是解决‘无法验证开发者’‘打不开’‘功能受限’等常见问题的前提。Office 2021代表永久许可模型,Office 2024 LTSC面向企业离线场景,Microsoft 365则是持续订阅服务,三者在授权验证方式、更新策略与系统兼容性上存在本质差异。实际应用中,需结合macOS版本、芯片架构(Intel/Apple Sil 阅读详情

相关推荐

中颖单片机SH79F3213正弦波矢量的电动车小毛驴控制器量产资料

中颖单片机SH79F3213正弦波矢量的电动车小毛驴控制器量产资料 中颖单片机SH79F3213 制作的电动车小毛驴控制器量产资料,已量产十几万片,拿到手即可量产 1、提供原理图 2、提供PCB图 3、提供C语言源代码程序 4、提供清单 ...

m0_69036675的博客 4526

hdu - 4336 Card Collector

Problem Description In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people in the famous novel Water Margin, ...

brucehb的专栏 267

【数据降维】数据降维方法分类

数据降维基本原理是将样本点从输入空间通过线性或非线性变换映射到一个低维空间,从而获得一个关于原数据集紧致的低维表示。 数据降维工具箱drtoolbox中众多算法,这里简单做个分类。 因为很多并没有仔细了解,在此次只对八种方法做分类:主成分分析(Principal Component Analysis,PCA)、线性判别分析(Linear Discriminant Analysis,LDA)、等

小魏的修行路 6万+

HDU4336 Card Collector 概率+容斥

求得到n张卡的期望。 Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1700    Accepted Submission(s): 776 Special Judge

835

【PB03F 超详细-环境搭建】蓝牙5.2安信可PB-03F-Kit开发板二次开发环境搭建

PB-03是由深圳市安信可科技有限公司开发的蓝牙模块。本博文介绍安信可PB-03F-Kit开发板的基本情况、开发环境搭建,以及以点亮LED为例介绍程序编写和固件烧录的操作流程。 安信可PB-03F-Kit开发板使用的PHY6252这样一款高集成度的低功耗蓝牙系统级芯片(SoC),专为物联网(IoT)、移动设备、可穿戴电子设备、智能家居等各种应用而设计。......

qq_44078824的博客 1万+

关于华为高斯数据库出现Invalid or unsupported by client SCRAM mechanisms定位解决的过程

最近公司有个新项目使用的是高斯数据库,因为我们的项目是直接从别的项目组拿来的,配置都是已经配好的,但是在放到正式环境上之后出现报错。起初我们以为是测试和正式的版本不一致,但是结果是版本一致的。最后这个问题搞了我们几个小时,都没法解决。

Curtisjia的博客 3176

HDU 4336 概率dp或者容斥原理

Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2087    Accepted Submission(s): 984 Special Judge Problem Description In

_rabbit的专栏 1314

PD3.0详解 第六章 协议层—数据消息之—VDM

PD3.0的VDM 很多对PD3.0协议了解不是很深入的同学可能对VDM有一些陌生,因为这个VDM是较为次要,只不过相对沟通电源的协议来讲VDM是次要,但从PD3.0协议的角度来说,这个也是非常重要的,是必须要非常明白的了解这个东西,所以今天大师匈就分享一下这部分的重要知识点。 VDM (vendor define message) VDM是什么意思呢,就是原厂定义的消息,比如PD快充芯片的原厂定义的一些自己独立的message。但是呢这部分也有规定的一些标准的字段。 另外我们要很清楚PD协议的数据分为几类

大师匈的博客 1万+

Card Collector(概率期望+容斥原理+状压)

In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people in the famous novel Water Margin, you will win an amazi...

永夜莫明的博客 725

24、汽车黑客技术全解析:诊断代码、车库创建与系统攻防

本文深入探讨了汽车黑客技术的核心内容,包括诊断代码模式与参数ID、创建开放车库社区、汽车系统相关技术、硬件与软件工具、攻击与防御手段,以及车辆通信与网络安全。无论你是汽车安全研究人员、爱好者还是开发者,都能从中获取全面的技术解析与实践指南。

Apple的专栏 227

深入YOLOv8内部核心:用RepNCSPELAN4深度重构主干网络,即插即用的高效涨点方案

本文提出了一种改进YOLOv8目标检测模型的方法,通过在YOLOv8中引入RepNCSPELAN模块来提高检测性能。该模块融合了RepVGG重参数化思想与CSP-ELAN结构,在保持推理速度的同时增强特征表达能力。实验结果表明,改进后的RepNCSPELAN-YOLOv8相比原模型在多项指标上均有提升:准确率从0.84提高到0.86,召回率从0.72提升至0.81,mAP50和mAP50-95也分别提高了0.06和0.04。文章详细介绍了模块设计原理和移植步骤,包括配置文件创建、代码修改等关键环节,为YOL

FJN110的博客 186

hdu 4336 Card Collector 概率dp+状态压缩

Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2594    Accepted Submission(s): 1209 Special Judge Problem Description

smz436487的专栏 514

自助结账商品检测(Scanned Item Detection)——基于YOLOv8的RPC数据集实战

RPC数据集是由中国科学院自动化研究所发布的零售商品结账检测公开数据集,广泛用于自助结账和零售场景下的目标检测与识别。YOLOv8是YOLO系列最新版本,由Ultralytics推出,继承了YOLO家族的高效快速和高准确性,适用于实时检测场景。本文系统介绍了基于YOLOv8的RPC数据集自助结账商品检测方案,涵盖数据准备、训练、推理及UI界面设计。未来,可结合多模态感知、RFID融合技术,打造更加智能和稳定的自助结账系统。

YOLO 249

概率dp HDU 4336 Card Collector

Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1980    Accepted Submission(s): 925 Special Judge Problem Description

ocgcn2010的专栏 397

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【HDU4336】【Card Collector】【概率dp】

Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3316    Accepted Submission(s): 1620 Special Judge Problem Description

ACM之路 511

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

概率dp HDU4336 Card Collector

Description In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people in the famous novel Water Margin, you wi

杭锦泉的博客 265

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

hdu4336Card Collector_概率dp

//hdu4336 #include #include #include using namespace std; const int N=25; double dp[1<<20],p[N]; //dp[s] = (1 - ∑( p[i] ))*dp[s]+ ∑( p[i]*dp[ s ^ (1<<i) ] ) +1; //dp[s]=(∑( p[i]*dp[ s ^ (1<<i) ]

coder_coder_coder的专栏 327

HDU 4336 Card Collector(概率DP)

题意:有n种卡片,吃零食的时候会吃到一些卡片,告诉你在一袋零食中吃到每种卡片的概率,求搜集齐每种卡片所需要买零食的袋数的期望。 思路:先状态压缩,然后概率DP 用d[i]表示由状态i到目标需要再买多少包,则状态转移方程为d[i] = p'*(d[i]+1) + sigma(d[ i | (1 #include #include #include #include #

GODSPEED 748

[HDU4336]:Card Collector(概率DP)

题目传送门 题目描述 夏川的生日就要到了。作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物。商店里一共有种礼物。夏川每得到一种礼物,就会获得相应喜悦值$W_i$(每种礼物的喜悦值不能重复获得)。每次,店员会按照一定的概率$P_i$(或者不拿出礼物),将第i种礼物拿出来。季堂每次都会将店员拿出来的礼物买下来。没有拿出来视为什么都没有买到,也算一次购买。众所周知,白毛切开都是黑的...

weixin_30394251的博客 201

HDU-4336 Card Collector(状压概率DP||容斥原理)

感觉做了这么多概率dp,还是离熟悉比较远 合集里看到的,结果一眼就看到是用状态压缩做,然后状态都出来了,转移就没什么难度了... 设dp[i]表示当前取到了i的二进制中位的为1的卡时,离达到目标状态还需要购买方便面的期望,初始状态:dp[(1<<n)-1]=0; 则dp[i]可以转化为: ①:下一袋方便面没有卡,或j卡已有,即:(∑p[j]+pp)*(dp[i]+1); ②:下一袋方面面存在j卡,且当前没有,即:(∑p[j]*(dp[i|(1<<j)]+1); 则状态转移方程为:dp[i]=(∑p[j]+p

idealism_xxm的专栏 911

Hdu 4336 Card Collector (状态概率DP|容斥原理)

详细的题目大意与解析大家参考一下kuangbin的文章。 kuangbin链接 这边说一下自己对于kuangbin代码以及容斥原理位元素枚举的理解与解释,希望对大家有所帮助。 状态DP AC代码:状态压缩的思想我就不赘述了,我也只是略懂,这边仅仅分析一下状态方程 由于量比较多,我这边有的便用文字代替,有利于描述。 dp[i]表示i状态达到满状态(即收集满n个物品,以下称满状态)所需要的期

Jason 1017

hdu 4336 Card Collector (概率dp)

题目大意: 收集卡片,问收集齐n张卡片需要买多少包方便面的期望- -虽然不是方便面。 解题思路: 用1表示该位的卡片已经有,0表示没有。 dp[s] 表示拥有了s状态下1的卡片,还要买多少包才能凑齐n张卡片的期望。 所以 ,当你及其了所有的卡片。即 dp[(1 下面再来分析状态转移。 假设我们要收集齐 6 张,可是现在我们收集齐了五张。 那么你要中第六张。 就是第六

Jinx Jinx again 1196

HDU4336 Card Collector (概率dp+状压dp)

http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意:有n种卡片,一个包里会包含至多一张卡片,第i种卡片在某个包中出现的次数为pi,问将所有种类的卡片集齐需要买的包的期望。注意存在某个包中一张也没有。 分析:状态压缩有个挺显然提示,N<=20,这是在次落落的在提示你。 我们首先定义: dp[st] 表示 st 状态到目标状态 的期望...

weixin_30258027的博客 153

HDU 4336 Card Collector 状压+概率dp

题目链接:点击打开链接 dp[i] 表示已经拥有卡片的状态为i, 还需要吃多少包才能拥有所有卡片, 显然 dp[(1 而答案就是dp[0]; 用样例二举例,下面dp方程内直接用二进制表示,为了方便观察,我们用最高位表示第一张卡片(P1=0.1),最低位表示第n张卡片(P2=0.4)  dp[01]  = (dp[01]+ 1)* P + (dp[11]+1) *P2  //其中P表示吃不

九野的博客 1212

hdu4336Card Collector 概率dp+状态压缩

//给n个卡片每次出现的概率,求所有卡片都出现的需要抽的次数的期望 //dp[i]表示在状态的情况下到所有的卡片都出现的期望 //dp[i] = 1 + p1*dp[i] + ${p2[j]*dp[i]} + ${p3[k]*dp[i^(1 //$表示求和,p1表示没有出现卡片的概率 , p2[j]表示出现的卡片是当前状态已经出现的状态 //p3表示出现的卡片当前状态没有 //整理的dp

ijbuhv的专栏 941

HDU 4336 Card Collector (概率DP 或 容斥原理)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率为pi,每包至多一张卡片,也可能没有卡片, 求需要买多少包才能拿全N张卡片,求次数的期望。 概率DP思路:可以状压枚举每个状态,然后状态间进行转移,注意对于发生状态转移的概率的理解: 如果当前状态能够从...

Tongqi 614
上一篇: ZOJ 3582 Back to the Past [概率DP]
下一篇: HDU 4405 Aeroplane chess [概率DP+并查集]
GrassTreeFlower
博客等级 码龄11年 14粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值