SP1026 FAVDICE - Favorite Dice

雪球股票数据接口 周期(day-日,week-周,…表示获取前8个周期(日)数据):类型(before-历史)表示深圳证券交易所,表示上海证券交易所):开始时间戳(一定要。 阅读详情
Label

期望DP经典例题

Description

一个n面的骰子,求期望掷几次能使得每一面(每一种点数)都被掷到。

数据范围:n≤1000n\leq 1000n≤1000,共t(t≤1000)t(t\leq 1000)t(t≤1000)组数据。

Solution
一种正确但不可行的想法

一开始想着设dp[i][j]dp[i][j]dp[i][j]为投掷了iii次骰子后扔到过jjj个不同面所经过次数的期望,那么这个转移式还是比较好想的:

​ dp[i][j]=n−(j−1)ndp[i−1][j−1]+jndp[i−1][j](dp[1][1]=1)dp[i][j]=\frac{n-(j-1)}{n}dp[i-1][j-1]+\frac{j}{n}dp[i-1][j](dp[1][1]=1)dp[i][j]=nn−(j−1)​dp[i−1][j−1]+nj​dp[i−1][j](dp[1][1]=1)

​ ans=∑i=n∞dp[i][n]ans=\sum_{i=n}^{\infty}dp[i][n]ans=∑i=n∞​dp[i][n]

dp[i][j]dp[i][j]dp[i][j]由两种情况转移而来:1、dp[i−1][j]dp[i-1][j]dp[i−1][j]:扔了一次骰子还是已出现过的jjj面中的一种,p=jnp=\frac{j}{n}p=nj​;2、dp[i−1][j−1]dp[i-1][j-1]dp[i−1][j−1]:扔了一次骰子不是已出现过的j−1j-1j−1面中的一种,p=n−(j−1)np=\frac{n-(j-1)}{n}p=nn−(j−1)​。

但是,这种正向推导的方法有一种显然的问题:理论上存在扔无限次骰子而始终无法使得每一面都被掷到的可能性,故此答案没法统计(ansansans收敛于何处实在难求),故我们考虑不依赖于步数的新状态。

正推?

设dp[i]dp[i]dp[i]表示恰好投出iii种不同点数的期望投掷次数,初始状态为dp[1]=1dp[1]=1dp[1]=1,问题来了:dp[i]dp[i]dp[i]由何转移得到?应由dp[i−1]dp[i-1]dp[i−1]和dp[i]dp[i]dp[i]。到了这里,dp[i−1]dp[i-1]dp[i−1]到dp[i]dp[i]dp[i]的概率为n−i+1n\frac{n-i+1}{n}nn−i+1​,dp[i]dp[i]dp[i]到dp[i]dp[i]dp[i]的概率为in\frac{i}{n}ni​,概率和不为1,不可行。

逆推

设dp[i]dp[i]dp[i]表示当前已投出过iii种不同点数后投掷的期望次数,那么考虑在f[i]f[i]f[i]状态下投掷一次骰子,显然有in\frac{i}{n}ni​的概率又扔到原有的iii面骰子,f[i]f[i]f[i]转移到f[i]f[i]f[i],有n−in\frac{n-i}{n}nn−i​的概率扔到原来没扔到的n−in-in−i面骰子,f[i]f[i]f[i]转移到f[i+1]f[i+1]f[i+1],所以:

​ dp[i]=in(dp[i]+1)+n−in(dp[i+1]+1)dp[i]=\frac{i}{n}(dp[i]+1)+\frac{n-i}{n}(dp[i+1]+1)dp[i]=ni​(dp[i]+1)+nn−i​(dp[i+1]+1)

其中,dp[n]=0dp[n]=0dp[n]=0

化为标准递归公式的形式,即为:dp[i]=dp[i+1]+nn−idp[i]=dp[i+1]+\frac{n}{n-i}dp[i]=dp[i+1]+n−in​

(别忘了转移的时候我们扔了一次骰子!)

Code
#include<cstdio>
#include<iostream>
#define ri register int
using namespace std;

const int MAXN=1020;
int t,n;
double dp[MAXN],ans;

int main()
{
	scanf("%d",&t);
	for(ri opt=1;opt<=t;opt++)
	{
		scanf("%d",&n);
		dp[n]=0;
		for(ri i=n-1;i>=0;i--)
			dp[i]=dp[i+1]+(double)n/(double)(n-i);
		printf("%.2f\n",dp[0]);
	}	
	return 0;
}
OmniBox2.0.X版本 一站式影视订阅与多端播放平台文档 OmniBox 是一站式影视订阅与多端播放平台:你可以用 JS 或 Python 按 OmniBox 规范自建爬虫源,在后台把多个爬虫源自由组合成订阅,然后在网页、手机、电视等全平台的客户端里使用。只要客户端支持 TVBox、猫源、UZ、Emby 等协议,即可无缝对接。同时支持电视直播源、六大平台直播间和网盘源视频在线观看,通过 Docker 一键部署。 阅读详情

相关推荐

ROS2与Gazebo协同实现多机器人避障仿真

本文详细介绍了如何利用ROS2与Gazebo协同搭建多机器人避障仿真环境。通过创建SDF机器人模型、编写多机器人启动文件以及集成基础避障算法,构建了一个低成本、高效率的虚拟测试平台,为AGV编队、机器人集群等项目的算法验证与迭代提供了完整解决方案。

weixin_29065659的博客 295

python——解决扔骰子小问题

1.问题 有一个n面的骰子,每一面分别为1~n,不断的投骰子,直到骰子上的数累加超过50停止,问这累加和的平均值是多少? 2.代码如下 import random n = int(input("请输入一个正整数n:")) a = range(1,n) count = 0 list1 = [] b = random.choice(a) list1.append(b) #print(sum(...

weixin_41869644的博客 2432

白话详细解读(七)----- CBAM:Convolutional Block Attention Module

一、CBAM简介 论文链接:https://x.sci-hub.org.cn/scholar?hl=zh-TW&as_sdt=0%2C5&q=CBAM%3A+Convolutional+Block+Attention+Module&btnG=&oq=CB CBAM这篇论文是在2018年提出的,自提出之后,已经被引用上千次,可见其影响力。CBAM是一种专门为了卷积神经网络而设计的注意力模块,传统的卷积存在只关注局部信息,而往往忽略全局信息的弊端,以3*3卷积为例,滤波器有9个

奋斗の博客 1万+

(LightOJ - 1248)Dice (III)(数学期望)

题目链接:Dice (III) - LightOJ 1248 - Virtual Judge (ppsucxtt.cn) 题意:给你一个n面的骰子,问使得骰子所有面都被骰出的期望次数。 这其实可以用概率dp来解决,但是我想在这用一下其他方法来求解。 这道题目的模型实际上是由n个几何分布的模型构成,比如说我们已经骰出了i个不同的点数,现在要骰出一个从未出现过的点数,那么我们成功的概率就是(n-i)/n,如果我们本次没有成功,那我们就需要再骰一次,直至成功为止,所以这显然就是一个几何分布的模型,他成功所需

AC__dream的博客 334

嵌入式开发避坑指南:手把手教你用STM32CubeMX配置W9825G6KH SDRAM(含时序参数详解)

本文详细介绍了如何使用STM32CubeMX配置W9825G6KH SDRAM,包括硬件连接检查、CubeMX初始化步骤、时序参数优化及稳定性问题排查。通过实测波形分析和案例分享,帮助开发者避免常见配置错误,提升嵌入式系统性能与稳定性。

weixin_42542669的博客 197

别再死记硬背了!用LabVIEW串口通信的3个真实项目案例,手把手教你从调试到部署

本文通过3个真实项目案例,详细讲解LabVIEW串口通信从调试到部署的全过程。涵盖Arduino温湿度监控、西门子PLC Modbus通信以及高可靠性通信框架设计,提供实用技巧和常见问题解决方案,帮助工程师快速掌握LabVIEW串口通信的实战应用。

weixin_30485379的博客 523

骰子游戏 python 实现

1.扔三颗骰子,求点数之和最大值出现的概率? 思想:三颗骰子的和数取值范围在[3,18],越靠近两边出现的概率越小,点数最大的应该在中间,以下计算9,10,11,12的概率: * * 首先计算出现9的概率:为了避免重复和遗漏,将点数和为9分成两种情况: (1)三个骰子点数都不相同:(1,2,6),(1,3,5),(2,3,4) (2)可以允许存在相同的点数:(2,2,5),(3,3,3),(4...

Jasminexjf的博客 1726

解决鸿蒙/荣耀设备GMS应用调试中的“Play保护机制认证”报错

本文详细解析了在鸿蒙或荣耀设备上调试GMS应用时,遇到“Play保护机制认证”报错的根本原因与解决方案。核心在于获取设备的GMS Device ID,并通过Google官方渠道完成临时注册,从而绕过认证限制。文章提供了无需Root和ADB查询两种具体方法,并分享了授权后的故障排查与实战经验,帮助开发者高效解决问题。

weixin_29288313的博客 299

剑指offer 面试题60 python版+解析:n个骰子的点数

题目描述: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值的出现概率。 思路:定义两个数组。数组的长度为6*n,即可能出现的最大和。数组每个元素的值代表出现的次数,比如probability[5]表示点数和为5出现的次数。在一轮循环中,一个数组记录之前一次所有出现的情况,一个数组记录这一次的所有出现的情况。例如这一次出现和为n的次数,应该等于另一个数组里记录...

Yenpo Ma的博客 1667

03、ZigBee 开发教程之进阶篇—CC2530无线传输质量检测

文章目录1、Packet Error Rate Tester(包错误率测试)理论分析1.1、工作流程1.2、流程图1.3、丢包、PER、RSSI计算方法2、实验详解2.1、实验目的2.2、实验设备2.3、实验现象2.4、源码分析2.5、实验步骤及现象 1、Packet Error Rate Tester(包错误率测试)理论分析 1.1、工作流程 Packet Error Rate Tester(包错误率测试) 1、启动 板载外设、射频IO、系统时钟、中断等初始化(halBoardInit();); Bas

嵌入式羊圈 1536

C# WPF上位机开发(利用tcp/ip网络访问plc)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 c# wpf如果是用来开发非标上位机的,那么和plc的通信肯定是少不了的。而且,大部分plc都支持modbus协议,所以这个时候如果有一个库可以帮助我们和plc设备进行modbus通信,那就非常方便的。目前NuGet下关于modbus的函数库还是有一些的,比如EasyModbus。

嵌入式-老费,一个分享专业嵌入式知识的blog 2529

剑指offer第二版 面试题60 n个骰子的点数 python 动规

所有题目单独整理的版本存储在这里, 点击题目名字可以跳转到牛客网的成功提交记录,点击python可以看到存储库中的对应求解代码。 把n个骰子仍在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 def offer60(n): # 第n个骰子得到k的次数由n-1个骰子 k-1 ~ k-6 的个数和所决定,动规递推式 # f(n,k) = f(n-1...

Jasmine_dream 874

GFPS技术原理(一)-简介

GFPS(谷歌快速配对服务)利用BLE技术简化设备配对流程,相比传统方式大幅提升用户体验。首次配对时,设备广播包含型号ID和安全密钥的BLE信号,手机检测后弹出配对通知,用户点击即可完成安全连接并将设备与Google账户绑定。该技术支持跨设备同步、电量显示、找回设备等功能,后续配对更加便捷。GFPS通过BLE实现快速发现、一键配对和安全连接,结合Google后端服务提供元数据支持,已成为出海设备的认证标准。其核心优势在于简化操作步骤并增强功能性,特别适合非技术用户群体。

十多年蓝牙协议软件开发,擅长蓝牙协议分析 2062

SP1026 FAVDICE - Favorite Dice[期望DP]

Description\mathcal{Description}Description 一个nnn面的骰子,求期望掷几次能使得每一面都被掷到 输入有TTT组数据,每次输入一个nnn 输出保留两位小数 Solution\mathcal{Solution}Solution 设f[i]f[i]f[i]表示已经掷到过iii面,还 期望掷多少次骰子使每一面都被掷到 现在掷一次骰子,有两种情况 有in\fr...

Morning_Glory_JR的博客 541

WINCC7.3破解文件

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

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SP1026 FAVDICE - Favorite Dice 题解

题目链接 看到所有题解都是倒退,却没有一个讲正推的,这里就来讲一下 设 fif_ifi​ 表示已经掷到过 iii 个不同面的时候需要的期望次数 初始化 f0=0f_0=0f0​=0 那么,转移方程显然是 fi=n−i+1n⋅fi−1+n−in⋅fi+1f_i = \frac{n-i+1}{n} \cdot f_{i-1}+\frac{n-i}{n} \cdot f_i +1fi​=nn−i+1​⋅fi−1​+nn−i​⋅fi​+1 化简后得到 fi=fi−1×(n−i+1)+nn−if_i=\frac{f_

Brian_Pan_的博客 262

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

(期望DP)【题解】SP1026 FAVDICE - Favorite Dice

题目 一个n面的骰子,求期望掷几次能使得每一面都被掷到。 link 题解 一个期望DP的常用状态设计方法: dp[i]表示当前已选了 iii 种点数,还需一直选到 nnn 种点数的丢骰子数的期望。 显然dp[n]=0,答案为dp[0] 现在考虑转移: 则每次丢骰子有两种状态。 和之前的点数一样,有 in\frac{i}{n}ni​ 的概率出现。记为 XXX。 和之前的点数不一样,有 n−in\frac{n-i}{n}nn−i​ 的概率出现。记为 YYY。 那么所以当前这一状态 E(i)=E(X)+E(Y

tanfuwen_的博客 835

SP1026 FAVDICE - Favorite Dice 期望dp

传送门 文章目录题意:思路: 题意: 一个n面的骰子,求期望掷几次能使得每一面都被掷到。 思路: 考虑期望dpdpdp。定义f[i]f[i]f[i]表示有iii面了,还需要多少次能到nnn面。当前是iii面,所以选到新的面的概率是n−in\frac{n-i}{n}nn−i​,选到已经有的面的概率是in\frac{i}{n}ni​。那么转移也就比较明显了:f[i]=f[i+1]∗n−in+f[i]∗in+1f[i]=f[i+1]*\frac{n-i}{n}+f[i]*\frac{i}{n}+1f[i]=f[i

m0_51068403的博客 188

SP1026 FAVDICE - Favorite Dice 数学期望

Code: #include&lt;cstdio&gt; #include&lt;algorithm&gt; #include&lt;cstring&gt; using namespace std; #define maxn 1009 double dp[maxn]; int main(){ int n,t; scanf("%d",&amp;t); while(...

EM LGH 159

SP1026 FAVDICE - Favorite Dice(期望dp)

题意: 一个n面的骰子,求期望掷几次能使得每一面都被掷到。 数据范围:n<=1e3

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 403

概率DP—— SP1026 FAVDICE - Favorite Dice(洛谷)

SP1026 FAVDICE - Favorite Dice 1.题目含义: 掷一个n面的骰子,问每一面都被掷到的次数期望是多少。 2.思路(by——洛谷): #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;string&gt; #include&lt;cmath&...

SYITwin的博客 390

SP1026 FAVDICE - Favorite Dice(扔筛子期望)

题目链接 很老套的期望了 定义dp[i]dp[i]dp[i]为已经有iii面筛子扔过,还需要仍到nnn面的期望 那么dp[n]=0dp[n]=0dp[n]=0 p=inp=\frac{i}{n}p=ni​表示此时扔到已有的面的概率 dp[i]=(dp[i]+1)∗p+(dp[i+1]+1)∗(1−p)dp[i]=(dp[i]+1)*p+(dp[i+1]+1)*(1-p)dp[i]=(dp[i]+1)∗p+(dp[i+1]+1)∗(1−p) 意思是有p的概率从i面转移到i面,有(1−p)的概率转移到dp[i+

jziwjxjd的博客 414

N个M面骰子,点数和的概率分布[待学习]

索引目录:知乎:1次丢5个骰子的和分布                    n个骰子的和概率分布

poxiao8的博客 6289

leetcode之n个骰子的点数,python版本

书上写的还是比较晦涩难懂的。实际上用动态规划很好解决: #coding=utf8 def get_ans(n): dp = [[0 for i in range(6*n)] for i in range(n)] for i in range(6): dp[0][i] = 1 # print dp for i in range(1,n): #1...

leokingszx的博客 2829

Favorite Dice (SPOJ-FAVDICE)期望DP

BuggyD loves to carry his favorite die around. Perhaps you wonder why it's his favorite? Well, his die is magical and can be transformed into an N-sided unbiased die with the push of a button. Now Bug...

菜鸡的博客 278

期望——FAVDICE - Favorite Dice

题解: 假设当前已经丢除了i个面了,下一个面是新的概率是n−i/nn-i/nn−i/n我们知道概率的倒数是期望所以求和就行了。 #include <bits/stdc++.h> #define int long long using namespace std; using namespace std; const int N=10000010; int n,t; double ans; signed main(){ cin>>t; while(t--){

行走天涯的豆沙包的博客 208
上一篇: luoguP4316 绿豆蛙的归宿
下一篇: 平面(二维)凸包&&luoguP2742 【模板】二维凸包
guapi2333
博客等级 码龄9年 7粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值