LeetCode-808-分汤

news2024/11/16 18:56:41

在这里插入图片描述

1、动态规划法

我们可以利用二维数组 d p [ i ] [ j ] dp[i][j] dp[i][j]来记录当汤A的体积为i,汤B的体积为j时的概率。由于体积均为25的倍数,为了方便计算我们可以将所有体积都除以25。由于误差范围为 1 0 − 5 10^{-5} 105,我们可以计算得出当$n\ge179时,比值和1的差值小于 1 0 − 5 10^{-5} 105,我们可以直接返回1。

class Solution {
public:
    double soupServings(int n) {
        n = ceil((double) n / 25);
        if (n >= 179) {
            return 1.0;
        }
        vector<vector<double>> dp(n + 1, vector<double>(n + 1));
        dp[0][0] = 0.5;
        for (int i = 1; i <= n; i++) {
            dp[0][i] = 1.0;
        }
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                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.0;
            }
        }
        return dp[n][n];
    }
};

2、记忆化搜索

与动态规划法相同,我们可以使用记忆化搜索,使用数组 d p [ i ] [ j ] dp[i][j] dp[i][j]来保留当前的比值。其优点在于自底向上的搜索可以避免许多不可能的状态。

class Solution {
public:
    double soupServings(int n) {
        n = ceil((double) n / 25);
        if (n >= 179) {
            return 1.0;
        }
        memo = vector<vector<double>>(n + 1, vector<double>(n + 1));
        return dfs(n, n);
    }

    double dfs(int a, int b) {
        if (a <= 0 && b <= 0) {
            return 0.5;
        } else if (a <= 0) {
            return 1;
        } else if (b <= 0) {
            return 0;
        }
        if (memo[a][b] > 0) {
            return memo[a][b];
        }
        memo[a][b] = 0.25 * (dfs(a - 4, b) + dfs(a - 3, b - 1) + 
                             dfs(a - 2, b - 2) + dfs(a - 1, b - 3));
        return memo[a][b];
    }
private:
    vector<vector<double>> memo;
};

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

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

相关文章

Day08--自定义组件的插槽

1.什么是插槽 **************************************************************************************************************************************************************************************************************************** 2.单个插槽 我的操作&am…

一个小台灯 之 微信小程序开发日志

微信小程序开发日志 小程序只能使用https和后台服务器进行post请求和get请求&#xff0c;使用https的连接需要的微信小程序的后台对域名进行备份。 在备份的时候也只能通过域名&#xff0c;不能通过公网IP备份。 一、基础 微信小程序的一个界面主要分为四个文件 index.json…

剖析一下“抢茅台“脚本底层逻辑

本文作者&#xff1a;梁冬冬 前言&#xff1a; 今天你撸茅台了么&#x1f447;&#xff1f; 撸茅台已经成为社会现象&#x1f64c;&#xff0c;茶余饭后讨论的最佳实践&#x1f607; 2022年双十一大促已经完美收官&#xff0c;兄弟姐妹克服种种困难与挑战… 备战的会议室忙碌…

用户规模持续上涨,外卖行业未来的发展趋势如何?还能从里盈利?

外卖跑腿行业随着互联网移动支付及网络的普及得到了高速发展&#xff0c;相关数据显示2022年外卖行业规模进一步上升至8117亿元&#xff0c;外卖市场发展速度增速加快&#xff0c;并且也带动了各大主流外卖平台的发展&#xff0c;在2021年外卖用户规模达5.44亿人&#xff0c;占…

从工厂打螺丝到月薪9.5k测试工程师,我该满足吗?

以前我比较喜欢小米那句“永远相信美好的事情即将发生”&#xff0c;后来发现如果不努力不可能有美好的事情发生&#xff01; 初中毕业进厂5年&#xff0c;创业经商多次战败&#xff0c;为了生计辗转奔波 初中毕业后我就进了工厂&#xff0c;第一份工作是做模具加工。从500元一…

Python:用一行代码在几秒钟内抓取任何网站

如果你正在寻找最强大的 Python 抓取工具&#xff1f;不要再看了&#xff01;这一行代码将帮助你立即启动并运行。 Scrapeasy Scrapeasy 是一个 Python 库&#xff0c;可以轻松抓取网页并从中提取数据。它可用于从单个页面抓取数据或从多个页面抓取数据。它还可用于从 PDF 和 …

算法设计与分析 SCAU10346 带价值的作业安排问题

10346 带价值的作业安排问题 时间限制:1000MS 代码长度限制:10KB 提交次数:25 通过次数:9 题型: 编程题 语言: G;GCC;VC;JAVA Description 已知n项作业E{1, 2, … ,n} 需要完成&#xff0c;只有一台机器&#xff0c;同一时刻至多完成一个作业&#xff0c; 而且每项作业需要…

Msyql数据库入门基础教学

目录 文章目录二、数据库三、为什么要使用数据库&#xff1f;四、 数据库相关的概念⑤SQL语句操作修改表insert基本使用update语句delete语句二、数据库 数据库的种类有许多&#xff0c;企业中常用的有MySQL、Oracle&#xff0c;其中MySQL使用最多&#xff0c;是因为他开源免费…

和外国bi相比,国产bi软件更适合中国企业

提起国外bi和国产bi软件之争&#xff0c;经常有人说国外bi软件起步更早&#xff0c;经验更丰富&#xff0c;功能更强大。无可否认国外bi软件发展起步早&#xff0c;也确实功能强大&#xff0c;但当他们来到中国却往往会面临着本土化难题&#xff0c;经常出现水土不服现象&#…

【Hack The Box】linux练习-- Jarvis

HTB 学习笔记 【Hack The Box】linux练习-- Jarvis &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f3…

基于docker-k8s的web集群

目录 网络拓扑图 基于docker-k8s的web集群搭建 项目描述 详细步骤 1、集群ip地址的规划 2、Ansible批量部署服务器 3、创建k8s集群 4、配置NFS服务 5、pv&#xff0c;pvc&#xff0c;与NFS融合 6、配置Nginx负载均衡 网络拓扑图 基于docker-k8s的web集群搭建 项目描述…

web前端期末大作业基于html+css+javascript+jquery制作家乡主题风景网页设计与实现——张家口

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

【Hack The Box】Linux练习-- Popcorn

HTB 学习笔记 【Hack The Box】Linux练习-- Popcorn &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f…

java项目-第156期ssm贝儿幼儿教育管理系统-java毕业设计_计算机毕业设计

java项目-第156期ssm贝儿幼儿教育管理系统-java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm贝儿幼儿教育管理系统》 该项目分为2个角色&#xff0c;管理员、用户。 用户可以浏览前台,包含功能有&#xff1a; 首页、幼儿园信息、活动信息、就餐信息…

CAS号:1676104-79-2

所有细胞渗透性肽C(Npys) rrrrrrr - nh₂的d模拟物。 编号: 129180中文名称: H-Cys(NPys)-D-Arg-D-Arg-D-Arg-D-Arg-D-Arg-D-Arg-D-CAS号: 1676104-79-2单字母: H2N-C(Npys)-DArg-DArg-DArg-DArg-DArg-DArg-DArg-DArg-DArg-NH2三字母: H2N-Cys(Npys)-DArg-DArg-DArg-DArg-DArg-…

Kotlin 开发Android app(八):Kotlin类对象class

只要是面向对象的编程语言&#xff0c;基本上都有类Class的用法&#xff0c;只是好不好用&#xff0c;好不好记而已&#xff0c;面向对象是c开始引入的&#xff0c;但是c 关于类的东西&#xff0c;弄的太复杂&#xff0c;其实在真正的项目中&#xff0c;很少用到非常多复杂的概…

论文阅读:Practical Deep Raw Image Denoising on Mobile Devices

论文阅读&#xff1a; Practical Deep Raw Image Denoising on Mobile Devices 旷视 2020 ECCV 基于深度学习的降噪方法在近几年得到了大量的研究&#xff0c;这些方法的效果也霸榜了很多公开的数据集。不过这些方法用到的网络模型都很大&#xff0c;无法在手机端侧运行。这篇…

安装 DolphinDB Python API

1. 下载 whl 包 根据 CPU 架构、操作系统&#xff0c;从官方网站 pypi.org 下载对应的 Python API 安装包。 对应 x86_64, Python3.8 的包&#xff1a; 下载链接 2. pip 离线安装 pip install dolphindb-1.30.19.2-cp38-cp38-manylinux2010_x86_64.whl 3. 验证安装是否成…

数理天地杂志数理天地杂志社数理天地编辑部2022年第20期目录

数学基础精讲《数理天地》投稿&#xff1a;cn7kantougao163.com 函数定义域求法分析探讨 刘志勇; 2-3 不等式证明之极值点偏移问题探究 鲁媛媛; 4-5 利用导数突破函数的图象问题 王法金; 6-7 导数求解函数单调性的类型及分析 陈泓; 8-9 关注解三角形的一个常考…

JDK下载安装及环境配置

一、文章导读 随着互联网的日益发展, 越来越多的小伙伴加入了程序员这个行列, 也有很多小伙伴正计划学习编程, 学习Java 那么对于新手来说, 第一件事就是下载安装Java开发工具包, 也就是JDK, 今天我们就来一起详细的说说怎么操作 二、JDK版本描述 学习环境中, 我们通常…