LeetCode每日一题——808. 分汤

news2024/11/18 11:50:37

LeetCode每日一题系列

题目:808. 分汤
难度:普通


文章目录

  • LeetCode每日一题系列
  • 题目
  • 示例
  • 思路
  • 题解


题目

有 A 和 B 两种类型 的汤。一开始每种类型的汤有 n 毫升。有四种分配操作:

提供 100ml 的 汤A 和 0ml 的 汤B 。
提供 75ml 的 汤A 和 25ml 的 汤B 。
提供 50ml 的 汤A 和 50ml 的 汤B 。
提供 25ml 的 汤A 和 75ml 的 汤B 。
当我们把汤分配给某人之后,汤就没有了。每个回合,我们将从四种概率同为 0.25 的操作中进行分配选择。如果汤的剩余量不足以完成某次操作,我们将尽可能分配。当两种类型的汤都分配完时,停止操作。

注意 不存在先分配 100 ml 汤B 的操作。

需要返回的值: 汤A 先分配完的概率 + 汤A和汤B 同时分配完的概率 / 2。返回值在正确答案 10-5 的范围内将被认为是正确的。

示例

示例 1:

输入: n = 50
输出: 0.62500
解释:如果我们选择前两个操作,A 首先将变为空。 对于第三个操作,A 和 B 会同时变为空。对于第四个操作,B 首先将变为空。 所以 A 变为空的总概率加上 A 和 B 同时变为空的概率的一半是 0.25 *(1 + 1 + 0.5 + 0)= 0.625。

示例 2:

输入: n = 100
输出: 0.71875

提示:

0 <= n <= 10^9​​​​​​​

思路

动态规划:
首先,由于四种分配操作都是 25 的倍数,因此我们可以将 n 除以 25(如果有余数,则补 1),并将四种分配操作变为 (4,0),(3,1),(2,2),(1,3),且每种操作的概率均为 0.25。

  • dp数组定义为:dp[i][j]表示汤A还剩i份,汤B还剩j份求得答案的概率(也就是 汤A 先分配完的概率 + 汤A和汤B 同时分配完的概率 / 2)
  • 状态转移方程为在这里插入图片描述
  • 边界条件为:在这里插入图片描述
    最后,通过计算和观察可以发现当n>179*25时,答案都和1十分接近,所以之后的所有答案都直接返回1即可。

题解

class Solution:
    def soupServings(self, n: int) -> float:
    	# n做预处理
        n = (n + 24) // 25
        # 后面所有情况
        if n >= 179:
            return 1.0
        # 动态规划状态转移过程
        dp = [[0.0] * (n + 1) for _ in range(n + 1)]
        dp[0] = [0.5] + [1.0] * n
        for i in range(1, n + 1):
            for j in range(1, n + 1):
                dp[i][j] = (dp[max(0, i - 4)][j] + dp[max(0, i - 3)][max(0, j - 1)] +
                            dp[max(0, i - 2)][max(0, j - 2)] + dp[max(0, i - 1)][max(0, j - 3)]) / 4
        return dp[n][n]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大衣哥在《火火的情怀》后,和孟文豪张成军推出《新时代的农民》

最近一段时间&#xff0c;因为《火火的情怀》版权问题&#xff0c;农民歌唱家大衣哥&#xff0c;被著名导演兼编剧谷传民起诉。话说大衣哥因为被谷传民起诉&#xff0c;也被推上了舆论的风口浪尖&#xff0c;同时也让《火火的情怀》又一次大火。 在谷传民起诉大衣哥的案件当中&…

注册会计师怎么注册非执业?注会执业与非执业有何区别

注册会计师怎么注册非执业?以下就是关于注册会计师怎么注册非执业等等的介绍&#xff0c;希望对您有所帮助! 一、申请注册为非执业会员 取得注册会计师考试已合格&#xff0c;但尚未在中国境内从事审计业务工作二年以上者&#xff0c;可以自行向取得全科合格证书省级注册会计…

调研主板,树莓派 VS RK3288板子,还是 RK的主板香,但是只支持 anrdoid 7系统,估计也有刷机成 armbian或者

1&#xff0c;目前树莓派好贵啊&#xff01;Pi4bB 2G卖810 现在价格是&#xff1a;800多啊&#xff0c;疯了 哎真叫贵。 但是有个东西叫做 广告机的板子&#xff0c;是批量生产放到商场&#xff0c;地铁播视频的。 再配上一个屏幕&#xff0c;就可以直接播放广告了。 不同的地…

计算机网络4小时速成:传输层,功能,UDP协议,TCP协议,三次握手,传输数据,四次握手,超时重传,流量控制

计算机网络4小时速成&#xff1a;传输层 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c…

【云原生】Kubernetes(k8s)Calico 客户端工具 calicoctl

文章目录一、概述二、calicoctl 安装三、calicoctl 简单使用1&#xff09;认证信息配置2&#xff09;查看 IP 资源池3&#xff09;配置 IP 池4&#xff09;IP 资源池示例演示5&#xff09;固定 IP 示例演示6&#xff09;网络策略&#xff08;NetworkPolicy&#xff09;四、Kube…

盘点MySQL的八大日志,你知道哪些?

前言 日志对于任何系统应用来说都承载着至关重要的作用&#xff0c;借助日志&#xff0c;我们可以发现系统运行错误的原因&#xff0c;从而解决问题。MySQL也不例外&#xff0c;也会记录各种各样的日志信息。那么你知道MySQL都有哪些日志吗&#xff1f;每种日志的作用是干吗吗…

【Ajax】全面详细了解git的基础操作【万字教学+面试常客】

✍️ 作者简介: 前端新手学习中。 &#x1f482; 作者主页: 作者主页查看更多前端教学 &#x1f393; 专栏分享&#xff1a;css重难点教学 Node.js教学 从头开始学习 ajax学习 文章目录学习目标起步——关于版本的控制  文件的版本  版本控制软件  使用版本控制软件的好…

UDP和TCP两大协议的区别,让你快速高效掌握

UDP和TCP两大协议的区别 谈起UDP与TCP两大协议的异同&#xff0c;有人说我喜欢用TCP不喜欢用UDP&#xff0c;也有人说我喜欢用UDP而不喜欢用TCP&#xff0c;使用TCP的人说&#xff0c;我使用使用的协议比较可靠、不容易粘包、不容易丢包;使用UDP的人说&#xff0c;我使用的协议…

电脑没有声音了怎么恢复?恢复声音的6个方法【图解】

如今&#xff0c;很多电脑用户都会购买上各种不同品牌的音效产品&#xff0c;以便在必要时可以用来作为背景音乐。但在使用电脑过程中&#xff0c;总会遇到一些声音问题。有些朋友可能会因为声音问题而导致电脑无法正常使用。那么&#xff0c;电脑没有声音了怎么恢复&#xff1…

SpringSecurity框架【详细教学】

SpringSecurity 文章目录 文章目录SpringSecurity文章目录1、概述2、Spring Security、[Apache](https://so.csdn.net/so/search?qApache&spm1001.2101.3001.7020) Shiro 选择问题2.1、Shiro2.1.1、shiro的优点2.1.2、shiro的缺点2.2、Spring Security2.2.1、spring-secu…

计控实验(一)—— 数字滤波实验

太原理工大学计算机控制技术实验之数字滤波实验 数字滤波实验实验原理实验内容实验线路图设计参考流程图实验步骤及结果采样周期设计运行结果思考题实验原理 一般现场环境比较恶劣&#xff0c;干扰源比较多&#xff0c;消除和抑制干扰的方法主要有模拟滤波和数字滤波两种。由于…

Mybatis—解析SQL配置

Mybatis源代码中SqlSource描述XML文件或者Java注解配置的SQL信息&#xff0c;SqlNode描述动态SQL配置中的<if>和<where>等标签&#xff0c;LanguageDriver的职责就是负责将Mapper SQL配置进行解析&#xff0c;然后将SQL配置信息转换为SqlSource对象。从而可见Langu…

Nginx补充部分--IO模型

IO模型 服务端IO流程 磁盘I/O 磁盘I/O是进程向内核发起系统调用&#xff0c;请求磁盘上的某个资源比如是html 文件或者图片&#xff0c;然后内核通过相应的驱动程序将目标文件加载到内核的内存空间&#xff0c;加载完成之后把数据从内核内存再复制给进程内存&#xff0c;如果…

postgres-operator 原理解析- 章节 II 减少failover次数

本文讨论一波&#xff0c;kubernetes集群部署的高可用postgresql集群在滚动更新场景下&#xff0c;如何实现减少failover次数&#xff1f; 这个原理我觉得适用于任何主从架构的中间件&#xff0c;是一个通用的设计技巧。 那就是&#xff1a; 在进行滚动升级过程中&#xff0c…

谁在领跑纯电动L2

电动化智能化&#xff0c;正在产生协同效应。 根据高工智能汽车研究院最新监测数据显示&#xff0c;2022年1-10月&#xff0c;中国市场&#xff08;不含进出口&#xff09;乘用车前装标配搭载L2级辅助驾驶交付上险受到整体车市影响&#xff0c;同比下滑12.67%。不过&#xff0c…

关闭jupyter notebook报错

关闭jupyter notebook报错:python.exe-应用程序错误_秋叶原の黑猫的博客-CSDN博客 关闭jupyter notebook报错:python.exe-应用程序错误 此前在使用jupyter notebook的时候&#xff0c;没有出现问题&#xff0c;后面某次在使用之后&#xff0c;直接关闭终端之后&#xff0c;出现…

kotlin coroutine源码解析之Dispatchers协程调度器

目录Dispatchers协程调度器Dispatchers.DefaultDispatchers.IODispatchers.MainDispatchers.Unconfined协程调度器的实现CoroutineScheduler总结Dispatchers协程调度器 CoroutineDispatcher&#xff0c;具有用于调度任务的底层执行器。ExecutorCoroutineDispatcher的实例应由调…

计算机系统基础实验——数据的机器级表示(条件表达式 x?y:z)

题目描述&#xff1a; /* *conditional- 条件表达式 x?y:z *例子&#xff1a;conditional (2,4,5)4, *合法运算符号&#xff1a;&#xff01;~&^|<<>> */ int conditional (int x,int y, int z) { /**************/ return/******/; }首先来看什么是三目运算&…

Kubernetes云原生实战02 磁盘分区挂载实战

大家好&#xff0c;我是飘渺。 今天咱们继续更新Kubernetes云原生实战系列&#xff0c;如何基于上篇文章中提到的部署架构进行磁盘分区、格式化、挂载目录。 看到这里估计很多人要直接就关掉了&#xff1a;磁盘分区格式化不是运维的事吗&#xff0c;跟我开发有什么关系&#x…

图书管理系统(Java实现)[附完整代码]

作者&#xff1a;爱塔居的博客_CSDN博客-JavaSE领域博主 专栏&#xff1a;JavaSE 作者专栏&#xff1a;大三学生&#xff0c;希望跟大家一起进步&#xff01; 文章目录 目录 文章目录 一、图书管理系统菜单 二、实现基本框架 三、实现业务 3.1 打印所有图书 3.2 退出系统 3.3 查…