hdu4336 Card Collector 状压+概率DP

[HDU4336]Card Collector(概率DP and 概率容斥)(过程详解) 这是我这两类题目的第一次尝试 我会对过程进行详解 剖析题意: 意思就是你吃干脆面集卡片, 多组数据,每组数据,给定n种卡片,以及开到每一种卡片的概率。 求开到所有卡片的期望次数。 方法一:概率dp 最后是(fs+1) 首先n<=20,又是集到或没集到,看得出来状态压缩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<<n-1]=0,这样的话可以从前到后记忆化搜索,不过我这么写T掉了=..倒过来写成循环的装压DP就过了...2000W的复杂度才跑了400ms....

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
typedef long long ll;
const int maxn=(1<<20);
double dp[maxn];
double a[22];
bool f[22];
int n,m,k;
int main()
{
//    freopen("in.txt","r",stdin);
    while(~scanf("%d",&n))
    {
        memset(dp,0,sizeof dp);
        memset(f,false,sizeof f);
        for (int i=0; i<maxn; i++)
        dp[i]=1.0;
        for (int i=0; i<n; i++)
        scanf("%lf",&a[i]);
        int sta=(1<<n)-1;
        dp[sta]=0.0;
        double p=0.0;
        for (int i=sta-1; i>=0; i--)
        {
            p=0.0;
            for (int j=0; j<n; j++)
            if ((i&(1<<j))==0) dp[i]+=a[j]*dp[i|(1<<j)],p+=a[j];
            dp[i]/=p;
        }
        printf("%.4lf\n",dp[0]);
    }
    return 0;
}


群晖NAS下docker安装MySql 本文将一步一步讲解如何在群晖NAS的docker中启用一个MySQL容器 , 算是初学者对问题解决的一个记录. 阅读详情

相关推荐

ZynqMP多核实战:如何让A53-0跑Linux,其他核裸机处理大数据(附完整配置流程)

本文详细解析了Xilinx ZynqMP多核异构计算实战,重点介绍如何配置A53-0运行Linux系统,同时让其他A53和R5核心以裸机方式处理大数据任务。内容涵盖内存划分、核间通信、Linux定制配置等关键技术,提供完整的配置流程和性能优化方案,助力开发者实现高效的多核协同开发。

weixin_30555125的博客 480

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

题意:有n种卡片,你每买一包零食都有可能获得其中的一种卡片或者没获得卡片。问要集齐这n种卡片,需要买的零食包数的期望数是多少。 思路:状压dp+期望dp。因为最多有20种卡片,所以可以通过状态压缩表示获没获得该种卡片。0表示没有,1表示有,dp[i]表示状态i所需要买的零食期望数。最终集齐所有卡片的期望肯定是0,因为不需要再继续买了,因此dp[(1 可以发现,如果买的一包零食中没有卡片(概率为

LSD20164388的博客 392

【STM32-DSP库的使用】基于Keil5 + STM32CubeMX + CMSIS-DSP 手动添加、库添加方式

CMSIS-DSP库在工程中应用遇到的所有问题进行归纳终结

洋洋的博客 1万+

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

反无人机作战体系全解析:从低慢小探测到分层拦截

随着小型无人机在军事和民用领域的广泛使用,低慢小目标探测与拦截成为低空安全的核心挑战。传统防空体系面对成本低廉、飞行高度低、雷达特征小的无人机集群时,暴露出探测难、识别难、处置成本失衡等问题。为应对威胁,反无人机体系采用分层闭环设计,融合雷达、光电、声学与无线电侦测实现多源感知,通过电子战软杀伤与导弹、高炮、激光等硬杀伤手段协同配合,并借助自动化指控系统缩短“传感器到射手”的响应时延。该体系既可支撑战场要地防护,也能为民用低空安防提供参考。围绕分层反制逻辑,梳理探测、软硬杀伤、指控布防及实战短板,提供理解反

weixin_42533120的博客 334

[QMT和ptrade量化交易小白入门]-112、小市值热点概念交易策略,回测5年20倍

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1081

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

Cadence PSpice 仿真11:电感型低通滤波器最坏情况分析仿真实战图文教程

在进行蒙特卡罗分析时会将元器件的容差考虑进去,然后通过运行多次的随机仿真,得到电路输出的一个范围。但是多数情况下设计师关注的只是电路的最坏情况是否满足设计要求。PSpice的最坏情况分析是取在容差的边界点元件参数进行仿真以计算出电路输出的最坏情况。所以如果如果电路中有10个元件的话,需要先取10个元件的标准值仿真1次,然后再分别在10个元件的容差边界处各仿真1次,然后再对仿真结果进行统计和计算,再最坏情况下再仿真1次。

fydar的博客 1944

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

uniapp [全端兼容] - 最新详细实现拍摄视频录像并可播放预览视频,调起本机摄像头开启录像录制完毕后保存到本机临时存放,可对拍摄的视频进行压缩处理减少文件大小不损失画质,详解录制视频并读取播放!

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,录视频,拍视频,拍摄录制视频后上传服务器,调起摄像头录视频并可预览,录视频上传,录像,uniapp录制视频并上传,录制视频并保存到本地设备,如何本地保存并播放预览,提供给用户观看MP4视频录像并上传到后端服务器完整功能源码,视频压缩,mp4文件,删除视频,录像后怎么预览,临时视频文件怎么减少压缩大小,视频压缩及上传,自己录视频并生成可播放的文件,录视频并能打开查看,视频压缩后上传,本机相册,录完怎么预

🏆 前端领域优质创作者 1万+

华为OD机试 - 战士技能规划设计 - 数组(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。你为一款动作游戏设计战士角色的技能:战士每个技能会消耗不同能量,释放技能有 2 个约束:连续释放技能数量不能超过 m 个,技能能量总和不能超过能量上限 k;如果超过则必须中断当前技能,进入调息状态(即分段)。战士有一项爆发技巧:在单次战斗中有一次

学Java,找哪吒 235

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

weixin_30663391的博客 125

QLineEdit控件: 实现IP地址输入框(基于编辑信号)

在开发网络应用程序时,经常需要用户输入IP地址。直接使用普通输入框容易导致格式错误,用户体验也较差。本文将手把手教你用Qt的QLineEdit控件实现一个智能IP地址输入框。即使你是刚接触Qt的新手,也能通过本文理解核心实现原理。

u011186532的专栏 651

[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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

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

WINCC7.3破解文件

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

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

Camera2Demo

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

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

【概率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

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

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

左眼皮跳跳 657

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
上一篇: zoj 3640 Help Me Escape 记忆化搜索
下一篇: SGU495 Kids and Prizes 概率
NightRaven
博客等级 码龄15年 30粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值