AtCoder Beginner Contest 382-E

news/2024/12/1 11:39:19/文章来源:https://www.cnblogs.com/Vanilla-chan/p/18579643

Problem

有无数包牌,每包有 \(N\) 张牌。在每一包牌中, 第 \(i\) 张牌是稀有牌,概率为 \(P_i\%\)。每张牌是否稀有与其他牌是否稀有无关。

逐一打开包装,并获得每包中的所有卡片。当你一直开包直到总共获得至少 \(X\) 张稀有卡牌时,求你开包的预期次数。

Constraints

\(1 \leq N \leq 5000,1 \leq X \leq 5000,1 \leq P_i \leq 100\)

Solution

该问题可以分为两个部分。

首先,求出开一包卡牌将会得到的稀有卡牌数量的分布列

这是一个多元二项分布问题,直接暴力计算的话需要枚举一包卡牌的子集。

考虑动态规划。设 \(dp_{i,j}\) 为一包卡牌内前 \(i\) 张牌中存在 \(j\) 张稀有牌的概率。\(dp_{i,j}\) 可由两个状态转移:原本抽到了 \(j-1\) 张稀有牌,再翻一张发现正好是稀有牌;原本抽到了 \(j\) 张稀有牌,再翻一张发现不是稀有牌。故转移方程为:

\[\begin{align} dp_{i,j}=dp_{i-1,j-1}\times \frac{P_i}{100}+dp_{i-1,j}\times\frac{(1-P_i)}{100} \end{align} \]

其中,\(dp_{0,0}=1,dp_{i,j}=0(j<0)\)

通过上述动态规划得到 \(P(开一包卡牌得到j张稀有卡牌)=dp_{n,j}\),将其记作 \(Y_j\)

接着解决第二个问题:已知开一包卡牌得到的稀有卡牌数量分布列为 \(Y_j\)求开出 \(X\) 张稀有牌的期望开包次数

设得到 \(i\) 张稀有牌的期望开包次数是 \(E_i\)。对于 \(i=0\),有 \(E_i=0\)。模拟一次开包,将会有 \(Y_j\) 的概率获得 \(j\) 张稀有牌。所以有:

\[\begin{align} E_i=1+\sum_{j=0}^nE_{\max(i-j,0)}\cdot Y_j \end{align} \]

但是这个方程左右两侧都有 \(E_i\) 项(\(j=0\) 时),所以不能简单的递推。

将式子变换一下:

\[\begin{align} E_i&=1+E_i\cdot Y_0+\sum_{j=1}^nE_{\max(i-j,0)}\cdot Y_j\\ E_i\times(1-Y_0)&=1+\sum_{j=1}^nE_{\max(i-j,0)}\cdot Y_j\\ E_i&=\frac{1+\sum_{j=1}^nE_{\max(i-j,0)}\cdot Y_j}{(1-Y_0)} \end{align} \]

Code

#define N 6010int n,m;
double p[N];
double dp[N][N];
double E[N];
void solve()
{cin>>n>>m;for(int i=1;i<=n;i++) cin>>p[i],p[i]/=100;dp[0][0]=1; //起始条件,抽前0张牌的时候得到0张稀有牌的概率是100%for(int i=1;i<=n;i++){for(int j=0;j<=i;j++){//抽前i张卡牌,正好得到j张稀有牌的概率是dp[i][j]if(j==0) dp[i][j]=dp[i-1][j]*(1-p[i]); //防止越界else dp[i][j]=dp[i-1][j-1]*p[i]+dp[i-1][j]*(1-p[i]);}}//此时得到了开一次包的概率分布表(得到j张稀有牌)为dp[n][j]for(int j=0;j<=n;j++){
//		DEBUG(j,1);
//		DEBUG(dp[n][j],2);}for(int i=1;i<=m;i++){//得到i张稀有牌的期望开包次数是E[i]for(int j=1;j<=n;j++){if(i-j>=0) E[i]+=(E[i-j])*dp[n][j];else E[i]+=(0)*dp[n][j];}E[i]=(1+E[i])/(1-dp[n][0]);}cout<<E[m]<<endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/844498.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《网络与系统攻防技术》实验八实验报告

1.实验内容及要求 (1)Web前端HTML 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。 (2)Web前端javascipt 理解JavaScript的基本功能,理解DOM。 在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“…

2024-2025-1 20241417 《计算机基础与程序设计》第十周学习总结

2024-2025-1 20241417 《计算机基础与程序设计》第十周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>2024-2025-1计算机基础与程序设计第十周作业这个作业的目标 <信息系统,…

蓝桥杯 买瓜

思路: 解决一个关于选择和处理 “瓜” 的组合优化问题。给定了一定数量的 “瓜”(数量为 n),每个 “瓜” 有其自身的质量(存储在数组 a 中),需要通过选择和可能的 “劈” 操作(将瓜的质量减半),使得所选瓜的总质量尽可能接近给定的目标质量 m,并输出达到或最接近目标…

必看版指南:BTB扩展接口——LCD、Camera、UART、I2C…

本次我将把BTB扩展接口——LCD、Camera、UART、I2C等作为介绍,特别分享Air201硬件BTB扩展接口相关内容。其板载BTB 24PIN连接器,可用于扩展连接LCD、Camera、Uart、I2C等外设。本次我将把BTB扩展接口——LCD、Camera、UART、I2C等作为介绍,特别分享Air201硬件BTB扩展接口相关…

精讲Air780E低功耗模组AT指令的FTP指南!

本文要讲的是低功耗4G模组AT指令的FTP指南,我以常用的Air780E模组为例,供大家参考。本文要讲的是低功耗4G模组AT指令的FTP指南,我以常用的Air780E模组为例,供大家参考。 一、 FTP 协议简介 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。 FT…

微信计数器|微信微信计数器软件|微信计数器不封号|最新微信计数器

微信计数器|微信微信计数器软件|微信计数器不封号|最新微信计数器1.精准计数,自动重复,可同时统计多个微信,互不影响 2.带远程网页分享,5秒自动刷新,准确计数分秒不差 3.后台分享支持分组类别,单独分享链接 4.支持任意版本微信,不在受微信版本束缚 5.支持客户子后台,大…

深度剖析 | 低功耗模组Air724UG的软件实例:KEYPAD教程!

本次我要要深度剖析的是低功耗4G模组Air724UG的软件实例,关于KEYPAD的教程,赶紧来学吧。本次我要要深度剖析的是低功耗4G模组Air724UG的软件实例,关于KEYPAD的教程,赶紧来学吧。 一、简介 在电路设计中,通常需要较多的外部输入,如果每个按键都单独去占用一个 IO 接口,就…

LaVita pg walkthrough Intermediate

nmap └─# nmap -p- -A 192.168.159.38 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-01 00:21 UTC Nmap scan report for 192.168.159.38 Host is up (0.071s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ss…

探索性测试及基本用例

目录1 测试决策5要素 2 缺陷检测 3 探索性测试3.1 探索性测试的定义 3.2 探索性测试方法 3.3 探索性测试的核心优势 3.4 如何评估探索性测试的测试效果4 传统的测试和精益与探索式测试区别4.1 传统的测试与探索式测试的区别 4.2 探索式测试与精益5 如何实施探索性测试 6 基本测…

String类的三种常见构造方法

1.根据构造方法创建字符串对象1.public String() 创建一个空字符串,里面不包含任何内容2.public String(char[] chs) 创建一个字符数组,将其拼接成字符串对象3.public String(String original) 根据输入的字符串,创建字符串对象2.疑惑: 1.我们原来创建了对象,将其直…

考研打卡(33)

开局(33) 开始时间 2024-12-01 09:36:12 结束时间 2024-12-01 10:27:50昨天快递是室友帮我取的数据结构带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中_______(扬州大学 2013年) A 第i行非∞的元素之和 B 第i列非∞的元素之和 C 第i行非∞且非0的元素之和 D 第i列非∞且…

.NET Conf China 2024 AI相关内容解析

.NET Conf China 2024中国 .NET 开发者峰会即将在上海召开,这次大会是一届完全由社区组织举办的中国.NET 开发者盛会,我们筹备大会之初就定下了大会的主题是“智能、创新、开放”。我们将聚焦于人工智能和机器学习在 .NET 中的应用,将围绕“.NET x AI”这一议程展开,汇聚了…