HDU 4336 Card Collector(概率dp+状压)

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

Card Collector

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3014    Accepted Submission(s): 1445
Special Judge


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, 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.
 

Sample Input
1 0.1 2 0.1 0.4
 

Sample Output
10.000 10.500
 

Source

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>


#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define eps 1e-8
typedef __int64 ll;

#define fre(i,a,b)  for(i = a; i <b; i++)
#define free(i,b,a) for(i = b; i >= a;i--)
#define mem(t, v)   memset ((t) , v, sizeof(t))
#define ssf(n)      scanf("%s", n)
#define sf(n)       scanf("%d", &n)
#define sff(a,b)    scanf("%d %d", &a, &b)
#define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)
#define pf          printf
#define bug         pf("Hi\n")

using namespace std;

#define INF 0x3f3f3f3f
#define N 21

double dp[1<<N];
double p[N];
int n;

int main()
{
	int i,j;
    while(~sf(n))
	{
		mem(dp,0);
		double te=0;

		for(i=0;i<n;i++)
		{
			scanf("%lf",&p[i]);
			te+=p[i];
		}
        te=1-te;
		int len=1<<n;

		for(i=len-2;i>=0;i--)
		{
		   double x=0;
		   double s=1;

		   for(j=0;j<n;j++)
		   {
		   	   if(i&(1<<j)) x+=p[j];
		   	   else
					s+=p[j]*dp[i|(1<<j)];
		   }
		    dp[i]=s/(1-x-te);
		}
       pf("%.4f\n",dp[0]);
	}
   return 0;
}




Android ------ 开源的Modnet算法实现抠图和更换背景 Portrait Matting (sight-x.cn) 飞桨PaddlePaddle-源于产业实践的开源深度学习平台 GitHub - PaddlePaddle/PaddleSeg at develop 阅读详情

相关推荐

【强化学习的数学原理-赵世钰】课程笔记(一)基本概念

在B站上学习强化学习的课程笔记,笔记非常详细清晰,会持续更新

qq_64671439的博客 1万+

hdu4336 Card Collector 状压+概率DP

N张卡片,没买一包,得到每一张卡片的概率为a1,a2...an。问平均状态下买多少包可以集齐所有卡片。就是求期望了,N=20,状态一共也就100W左右,记DP[k]为当前状态为k时,收集齐N张卡片的期望,那么可以推出状态转移方程DP[k]=1+(不增加新牌的概率)*DP[k]+sum(a[i]*dp[i]),其中状态i为状态k新添一张牌的状态,边界dp[1 #include #include

Broken Wings 742

【WILEY】从Revision到Online:一次投稿的完整状态演进与关键节点实战解析

本文详细解析了从Revision到Online发表的完整投稿流程,包括修改稿准备、回复信撰写、状态跟踪等关键节点。特别针对Wiley期刊,提供了实用的操作技巧和常见问题解决方案,帮助作者高效完成论文修改与发表。

weixin_29219189的博客 362

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

Ego-Planner实战避坑指南:从环境搭建到仿真运行

本文详细介绍了在Windows系统下,通过WSL2搭建Ego-Planner无人机路径规划算法开发环境的完整流程与实战避坑指南。内容涵盖ROS Noetic安装、第三方依赖库(如Ceres Solver)编译冲突解决、Realsense SDK版本降级处理,以及Gazebo仿真与真机调试的常见问题,旨在帮助开发者高效完成环境配置并成功运行仿真。

weixin_29232507的博客 700

重头开始学ROS(8)---LVI-SAM复现与实机部署Ubuntu20.04以及如何适配6轴imu

本文详细记录了在Ubuntu20.04环境下复现LVI-SLAM系统的过程,主要包含四个部分:源码编译、问题解决、数据录制和6轴IMU适配。在编译过程中遇到GTSAM、PCL版本、OpenCV路径等典型问题并给出解决方案;详细说明了ROS bag包的录制规范;针对6轴IMU硬件限制,提供了核心代码修改方案。文章为LVI-SLAM系统在非标准环境下的部署提供了实用参考,特别适合需要适配不同硬件配置的研究者。

qq_73991479的博客 1559

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

win 11bitlocker恢复密匙一般情况的解决方式(这里指的是你现在使用的微软账户一直没有变更过)

本来没有打算写这一篇解决帖子的,但是最近好多微博的友友都在私我询问解决方法,孩子虽然很热心,但是真的回复不过来了,打字太累了,这里给大家简单指个路,希望能够对大家有所帮助。 当时出现这个问题的时候,一搜网上的解决方法都是重装系统什么的,真是吓死孩子啦。后来去微软的官网倒腾了半天解决了问题。其实只要你没有改过微软账户,你可以直接试试我这个方法,大概三到五分钟解决问题吧。 和我情况不一样的也可以参考一下贴吧里一些大佬的分享,或者实在着急我感觉去淘宝上找个解决也不是未尝不可。 出现问题: 解决方案: 直接去微软

zhiqingxue的博客 2万+

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

50、压电微泵与技术设备驱动的研究分析

本文研究了压电微泵在弹性微通道中的流体流动特性及技术设备驱动的振动行为。通过建立轴对称流固耦合模型,利用FreeFem++进行数值模拟,分析了不同数量压电致动器和频率对微泵流量的影响,发现多个致动器按特定时序压缩可产生净正向流量,并提出了稳态流量的近似解析公式。同时,针对技术设备驱动系统,探讨了周期性负载引起的强迫振动特性,明确了共振条件及影响因素,并比较了主动、被动和优化设计等振动控制策略。最后展望了实验验证、多物理场耦合与智能控制等未来研究方向,为相关设备的优化设计与高效运行提供了理论支持。

convnet3designer的博客 148

手机银行应用架构设计

网上银行借助互联网、移动通信网络等技术向客户提供金融服务,易受到通讯层面的安全威胁,金融机构应从通讯协议、安全认证、通信链路安全等层面,采取措施有效应对相关风险。网上银行系统服务器端提供网上银行应用服务和核心业务处理功能,金融机构应充分利用物理环境、通信网络、计算环境等领域的防护技术,在攻击者和受保护的资源间建立多道严密的安全防线。 网上银行除直接向用户提供金融服务外,也可能与外部机构开展业务合作。在网上银行系统设计、开发、部署和运营过程中,应充分考虑外部机构的系统可能存在的安全风险,并针对各类风险进行有效

银行信息系统应用架构详解 4831

HDU 4336 Card Collector(状压 + 概率DP 期望)题解

题意:每包干脆面可能开出卡或者什么都没有,一共n种卡,每种卡每包爆率pi,问收齐n种卡的期望 思路:期望求解公式为:$E(x) = \sum_{i=1}^{k}pi * xi + (1 - \sum_{i = 1}^{k}pi) * [1 + E(x)]$,即能转换到x情况的期望+x情况原地踏步的期望。 因为n比较小,我们可以直接状压来表示dp[x]为x状态时集齐的期望。那么显然dp[1111...

weixin_34032621的博客 137

4.Simulink基础建模操作——加减乘除运算

加减乘除运算

FPGA/MATLAB学习教程/源码/项目合作开发 9550

[HDU4336]Card Collector(概率期望+状压dp)

题目描述传送门题解f(i)表示得到的人物状态为i时的期望 然后枚举下一个状态,计算概率并转移代码#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std;int n; double p[25],f[1<<21];void clear()

zyf2000 606

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

HDU 4336 Card Collector(状压枚举+概率dp)

题目大意:有N(1 每包至多一张卡片,可能没有卡片。 求需要买多少包才能拿到所以的N张卡片,求次数的期望。

I am a slow walker, but I never walk backwards! 1016

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDU 4336-Card Collector(状压,概率dp)

题意: 有n种卡片,每包面里面,可能有一张卡片或没有,已知每种卡片在面里出现的概率,求获得n种卡片,需要吃面的包数的期望 分析: n很小,用状压,以前做状压时做过这道题,但概率怎么推的不清楚,现在看来就是基本的概率dp dp[s]表示获得卡片种数情况是s时期望包数,dp[(1<<n)-1]=0,dp[0]就是答案 dp[s]=sum(dp[s+(1<<j)]*p[...

weixin_30723433的博客 92

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HDU 4336 Card Collector (状压+概率DP)

题意很短略去不说。 思路:设dp[S] 为已集齐状态S中的各卡片后集齐所有卡片的期望值。 那么方程为dp[S] = 1 + sigma(dp[S + {v}] *p[v]) + (1 - sigma(p[v]))*dp[S]  (v是S中不包含的状态) 代码: #include #include using namespace std; const int MAX = 20000

Neutralzz的博客 393

HDU 4336 Card Collector(概率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

JOY 酷酷的专栏 375

hdu 4336 Card Collector (概率与期望+状压DP)

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

clover_hxy的博客 506

【概率dp+状压】HDU - 4336 E - Card Collector

E - Card Collector HDU - 4336 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 Wate...

qq_41037114的博客 214

hdu4336 Card Collector(概率期望dp+状压)

题目链接 分析: 和这道题还是蛮像的 但是抽到每张卡片的概率不同了 注意:And it is possible that there is nothing in the bag. 状态压缩,处理方式和poj2096 我们还是要倒着退:f[(1&lt;&lt;n)−1]=0f[(1&lt;&lt;n)−1]=0f[(1f[i]f[i]f[i]表示拥有状态iii的卡片的期望,设xxx为空包...

Coco_T的博客 228

★HDU 4336 Card Collector 详细题解(状压求期望)

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

K键盘里的青春K 1005

HDU 4336 Card Collector (期望+状压dp)

题意:给出n种图案在每一张卡片上的出现的概率,一张卡片只能出现一种图案,或者不出现,求集齐所有图案所需的卡片期望数。 题解:期望+状压dp 二进制压缩,dp[i]dp[i]dp[i]表示获得当前状态之后还需要的卡片数。 考虑两种情况。令p为当前状态未包含图案的概率和(Σp[j])。 ①抽到已经有的图案或未抽到 dp[i] += (dp[i] + 1) * (1 - p) ②抽到未有的图案 dp[i] += (dp[i | 1 << (j - 1)] + 1) * p[j] 化简一下得dp[i]即

gongyuandaye的博客 225

HDU 4336 Card Collector(状压期望DP || 容斥原理)

题意:n张卡,选到第i张概率为p[i],求取到n张的期望次数。 思路:状压期望DP。设取不到卡片概率为none,状态s里为1的位表示已经取到的卡片。求解dp[s],枚举s里为1的位i,则拿到新卡片的概率为sigma(p[i]),拿不到或拿到已有的概率为 1 - sigma(p[i])。这样有 dp[s] = (1 - sigma(p[i])) * dp[s] + sigma(p[i] * dp

ACMiao的博客 631

HDU 4336 Card Collector(容斥原理 or 状压求期望dp)

HDU 4336 Card Collector(容斥原理 or 状压求期望dp)

1588

HDU4336 Card Collector(期望状压dp或minmax容斥)

期望dp第三题. 这个还是老套路嘛,看到n=20n=20n=20想到状压所有状态 那么定义dp[x]dp[x]dp[x]为卡片状态是xxx时到达终点的期望 那么有dp[(1<<n)−1]=0:dp[(1<<n)-1]=0:dp[(1<<n)−1]=0:到了终点期望肯定是0嘛!! 至于转移,xxx可以从任何一个自己没有包含的卡片来转移 设xxx不包含第a,ba,ba,b张卡片 那么dp[x]=dp[x+(1<<a)]∗pa+dp[x+(1<<b)]∗

jziwjxjd的博客 555
上一篇: ZOJ 3640 Help Me Escape(概率dp+记忆化)
下一篇: HDU 4652 Dice(概率dp)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值