首页 > 其他分享 >关于此题[ABC382E] Expansion Packs 概率DP的一些总结

关于此题[ABC382E] Expansion Packs 概率DP的一些总结

时间:2025-01-03 22:12:21浏览次数:6  
标签:张卡 Packs int Expansion ABC382E 概率 ff now DP

传送门
首先看到这道题,我们发现想要求收集K个卡牌的期望开包数,必须要先求出每个包开出0~n张卡各自的概率,于是预示着这道题将要进行两次概率DP。
首先我们求每个包开出0~n张卡各自的概率。这个很好求,我们假设f[i][j]表示前\(i\)张卡中开出\(j\)张卡的概率,那么显然有:

\(f[i][j] = p[i] * f[i-1][j-1] + (1-p[i]) * f[i-1][j]\)

当然可以通过倒序枚举的方式将f压到一维。我这里用的是滚动数组

然后就是求收集K个卡牌的期望开包数。我们假设\(ff[i]\)表示收集\(i\)张卡牌期望开的包数。

做此类期望,或者说概率DP的题目,我们要注意一个思维,即假设我们开了上帝视角,也就是假设我们目前已经知道了所有的\(ff[i]\),仅仅是希望探求\(ff[i]\)与\(ff\)数组中其它元素的关系,并且借此来写出表达式(关系式),这就是我们要的递推式。个人觉得这是比较好能够理解的方式。

那么,我们现在假设\(ff[i]\)已知,试着考虑,对于目前摆在我们面前的这个包,我们即将打开它,那么此时我并不知道这个包中到底有多少张卡,但是我知道每个卡的数量对应的概率。我们假设包中有\(j\)张卡,那么对应的概率就是\(f[now][j]\),于是\(ff[i]\)就可以由\(ff[i-j]\)贡献而来。而包中0~n张卡都有可能,所以我们得到关系式:

\(f[i] = 1+\sum_{k=0}^{min(n,i)}p[k]*f[i-k]\)

注意,这里我用p[k]来表示f[now][k],即我们第一遍DP求出来的概率,而不是题目中输入的概率!这里的1是因为我一定要打开面前的这个包,所以期望的开包数一定会加1。我们发现这个式子两端都有f[i],于是我们需要将f[i]提出来才能得到DP能使用的递推式,化简得到:

$ f[i] = \frac{1}{1-p[0]}(1+\sum_{k=1}^{min(n,i)}p[k]*(f[i-k]+1))$

然后就可以解决这道题了。
代码:

#include<bits/stdc++.h>

using namespace std;

int n,m;
double p[5010],ans,sum;
double f[2][5010];
double ff[5010];

int main() {
    cin >> n >> m;
    for(int i = 1;i <= n;i++) cin >> p[i],p[i] /= 100;
    int now = 0,last = 1;
    f[now][0] = 1-p[1];
    f[now][1] = p[1];
    for(int i = 2;i <= n;i++) {
        swap(now,last);
        f[now][0] = f[last][0] * (1 - p[i]);
        for(int j = 1;j <= i;j++) {
            f[now][j] = p[i] * f[last][j-1] + (1 - p[i]) * f[last][j];
        }
    }

    for(int i = 1;i <= m;i++) {
        ff[i] = 1;
        for(int j = 1;j <= min(n,i);j++) {
            ff[i] += f[now][j] * ff[i - j];
        }
        ff[i] /= 1 - f[now][0];
    }

    printf("%.16lf",ff[m]);

    return 0;
}

标签:张卡,Packs,int,Expansion,ABC382E,概率,ff,now,DP
From: https://www.cnblogs.com/lwiwi/p/18651019

相关文章

  • 冻鳗蔓延设在MC游玩上的一些解决方案(以当期Modpacks Infinte Infinity为例,并拓展)
    文章组成一、前言二、游玩须知三、Mod解决方案四、联机解决方案五、拓展一、前言关于MC一时起兴,然后大部分人不知道怎么搞我们正在玩的模组,所以写这样一则博客来记录本期MC游玩的一些技术和方式,可以提供参考,并且照着本博客做应该会简单不少。本着让更多人一起快乐玩MC......
  • 云原生打包工具-Buildpacks
    云原生正在吞并软件世界,容器改变了传统的应用开发模式,如今研发人员不仅要构建应用,还要使用Dockerfile来完成应用的容器化,将应用及其依赖关系打包,从而获得更可靠的产品,提高研发效率。随着项目的迭代,达到一定的规模后,就需要运维团队和研发团队之间相互协作。运维团队的视角与研发......
  • 「清新题精讲」CheckerExpansion
    SRM550-500CheckerExpansionDescription起初\((0,0)\)点Alice填为了红色,接下来\(t\)次操作Alice和Bob轮流操作,如果\((x-1,y-1)\)位置被另一方填了且\((x-2,y)\)为空;或\((x-1,y-1)\)为空且\((x-2,y)\)被另一方填了,则当前方将填\((x,y)\)。给定\(x,y,h,w......
  • Packstack:创建概念验证云
    Packstack:创建概念验证云Packstack是一个OpenStack部署工具,旨在使用CentOSStream主机上的RDO发行版,以快速简便的方式安装概念验证小型环境。高可用性、OpenStack升级或其他day-2操作等生产功能超出了Packstack的范围。对于这些情况,您可以依靠其他推荐的工具例如O......
  • centos7 Packstack allinone安装openstack
    centos7Packstackallinone安装openstackPackstack是一种用于自动化部署OpenStack环境的工具,它可以快速安装和配置OpenStack的各个组件,同时提供了一些默认设置以方便快速上手。All-in-One模式是Packstack的一种安装模式,它在一台物理或虚拟机上部署了所有OpenStack的核心组件,包......
  • 【论文阅读】N-BEATS Neural basis expansion analysis for interpretable time serie
    原始题目:N-BEATS:Neuralbasisexpansionanalysisforinterpretabletimeseriesforecasting中文翻译:N-BEATS:可解释时间序列预测的神经基展开分析发表时间:2020-02-20平台:arXiv文章链接:http://arxiv.org/abs/1905.10437开源代码:https://github.com/servicenow/n-beats......
  • [论文阅读] Progressive Domain Expansion Network for Single Domain Generalization
    ProgressiveDomainExpansionNetworkforSingleDomainGeneralization3.Method本文提出的PDEN用于单域泛化。假设源域为\(\mathcal{S}=\left\{x_i,y_i\right\}_{i=1}^{N_S}\),目标域为\(\mathcal{T}=\left\{x_i,y_i\right\}_{i=1}^{N_T}\),其中\(x_i,y_i\)分别表示第......
  • Thunderbolt 3 PCIe Expansion 扩展卡
    计算机目前大部分都能够提供Thunderbolt3接口了。Thunderbolt3的传输速度更快,所以我们需要把Thunderbolt3转换为SASHBA,但市场上没有这个转换设备。后来我们发现有Thunderbolt3PCIeExpansion,就是通过这个设备把Thunderbolt3转换为PCIe卡槽,然后再插上SASHBA卡,......
  • Thunderbolt 3 PCIe Expansion 扩展卡
    计算机目前大部分都能够提供Thunderbolt3接口了。Thunderbolt3的传输速度更快,所以我们需要把Thunderbolt3转换为SASHBA,但市场上没有这个转换设备。后来我们发现有Thunderbolt3PCIeExpansion,就是通过这个设备把Thunderbolt3转换为PCIe卡槽,然后再插上SASHBA......
  • CentOS 安装OpenStack Packstack 一键部署(二)
    运行Packstack一键部署工具packstack--allinone一键部署包安装指令,运行后一下输出结果 运行需要一定的时间,运行完后,Linux网卡虚拟网桥bre-ex是临时ip地址,需要生成配置文件cd/etc/sysconfig/network-scripts/lscpifcfg-ens33ifcfg-br-excatifcfg-br-ex......