当前位置: 首页 > news >正文

LC-1402. 做菜顺序(记忆化搜索 ==> 动态规划、贪心)

1402. 做菜顺序

困难

一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。

一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度,也就是 time[i]*satisfaction[i]

返回厨师在准备了一定数量的菜肴后可以获得的最大 like-time 系数 总和。

你可以按 任意 顺序安排做菜的顺序,你也可以选择放弃做某些菜来获得更大的总和。

示例 1:

输入:satisfaction = [-1,-8,0,5,-9]
输出:14
解释:去掉第二道和最后一道菜,最大的 like-time 系数和为 (-1*1 + 0*2 + 5*3 = 14) 。每道菜都需要花费 1 单位时间完成。

示例 2:

输入:satisfaction = [4,3,2]
输出:20
解释:可以按照任意顺序做菜 (2*1 + 3*2 + 4*3 = 20)

示例 3:

输入:satisfaction = [-1,-4,-5]
输出:0
解释:大家都不喜欢这些菜,所以不做任何菜就可以获得最大的 like-time 系数。

提示:

  • n == satisfaction.length
  • 1 <= n <= 500
  • -1000 <= satisfaction[i] <= 1000

记忆化搜索 ==> 动态规划

class Solution {int[] satisfaction;int[][] cache;public int maxSatisfaction(int[] satisfaction) {Arrays.sort(satisfaction);this.satisfaction = satisfaction;int n = satisfaction.length;cache = new int[n][n];for(int i = 0; i < n; i++)Arrays.fill(cache[i], -1);return dfs(0, 0);}// 定义dfs(i, cnt) 表示 枚举到i,0-i中选择了cnt个菜,可以获得的最大系数总和// 转移 每个菜肴可以选或者不选public int dfs(int i, int cnt){if(i == satisfaction.length){return 0;}if(cache[i][cnt] >= 0) return cache[i][cnt];int res = 0;res = Math.max(res, dfs(i+1, cnt+1) + (cnt+1) * satisfaction[i]);res = Math.max(res, dfs(i+1, cnt));return cache[i][cnt] = res;}
}

转动态规划

class Solution {public int maxSatisfaction(int[] satisfaction) {Arrays.sort(satisfaction);int n = satisfaction.length;int[][] f = new int[n+1][n+1];int res = 0;for(int i = 0; i < n; i++){for(int j = 0; j <= i; j++){// 选f[i+1][j+1] = f[i][j] + satisfaction[i] * (j+1);if(j+1 < i)// 不选f[i+1][j+1] = Math.max(f[i+1][j+1], f[i][j+1]);res = Math.max(res, f[i+1][j+1]);}}return res;}
}

贪心

https://leetcode.cn/problems/reducing-dishes/solutions/2492854/mei-ju-zuo-ji-dao-cai-tan-xin-pythonjava-k7w2/?envType=daily-question&envId=2023-10-22

class Solution {/**贪心1. a[i]大的菜要后做   1*4+2*3 < 1*3+/*42. 将nums从大到小排序令k表示做的菜f(k) = k*a[0] + (k-1)*a[1] + ... + 2*a[k-2] + a[k-1]每一项去掉一个a[i],得到 f(k-1)(k-1)*a[0] + (k-2)*a[1] + ... + a[k-2]即 f(k) = f(k-1) + (a[0] + a[1] + .. + a[k-1])右边的和式是 a 的前缀和,可以一遍遍历a,一边将a[i]累加到一个变量s中*/public int maxSatisfaction(int[] satisfaction) {Arrays.sort(satisfaction);int f = 0; // f(0) = 0int s = 0;for(int i = satisfaction.length-1; i >= 0; i--){s += satisfaction[i];if(s <= 0){ // 后面不可能找到更大的f(k)break;}f += s; // f(k) = f(k-1) + s}return f;}
}

相关文章:

LC-1402. 做菜顺序(记忆化搜索 ==> 动态规划、贪心)

1402. 做菜顺序 困难 一个厨师收集了他 n 道菜的满意程度 satisfaction &#xff0c;这个厨师做出每道菜的时间都是 1 单位时间。 一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间&#xff08;包含之前每道菜所花费的时间&#xff09;乘以这道菜的满意程度&#x…...

泰森多边形

泰森多边形 93 泰森多边形又叫沃洛诺伊图&#xff08;Voronoi diagram&#xff09;&#xff0c;得名于Georgy Voronoi&#xff0c;是一组由连接两邻点线段的垂直平分线组成的连续多边形。一个泰森多边形内的任一点到构成该多边形的控制点的距离小于到其他多边形控制点的距离。…...

YOLOV8 进行docker环境配置

修改docker文件 原docekerfile中ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/下载很慢&#xff0c;可以在外部下载好&#xff0c;放入docker文件夹中&#xff0c;再将源代码改为ADD Arial.ttf…...

sealos一键部署K8S环境(sealos3.0时代教程过时了,目前已经4.0了,请移步使用Sealos一键安装K8S)

1 安装Sealos(4.0版本) sealos部署k8s贼方便&#xff0c;只需要一条init命令即可&#xff0c;3分钟部署完&#xff08;下载安装包的时间不算&#xff09;。 官方教程&#xff1a;https://www.sealyun.com/instructions/1st #主机名&#xff1a; hostnamectl set-hostname mas…...

【C++】stackqueue

适配器是一种设计模式 &#xff0c; 该种模式是将一个类的接口转换成客户希望的另外一个接口 。 虽然 stack 和 queue 中也可以存放元素&#xff0c;但在 STL 中并没有将其划分在容器的行列&#xff0c;而是将其称为 容器适配 器 &#xff0c;这是因为 stack 和队列只是对其他容…...

Hive篇面试题+详解

Hive篇面试题 1.什么是Hive&#xff1f;它的主要功能是什么&#xff1f; Hive是一个基于Hadoop的数据仓库工具&#xff0c;它提供了一个类SQL的查询语言&#xff08;HiveQL&#xff09;来查询和分析存储在Hadoop集群中的大规模数据。Hive的主要功能是将结构化数据映射到Hadoop…...

Mysql批量插入更新如何拆分大事务?

拆分大事务 一、解决方案二、遇到问题之前在运行Mysql任务的时候报错:binlog(1610646347 bytes) write threshold exceeded,原因是Mysql任务提交的是个大事务,超出binlog设定阈值,使得系统自动终止事务 一、解决方案 使用limit分页拆分大事务 CREATE PROCEDURE `split_tran…...

【计算机网络原理】初始网络基础

文章目录 1. 网络发展史1.1 单机时代1.2 网络互连局域网 LAN广域网 WAN 2. 网络通信基础2.1 IP 地址2.2 端口号2.3 协议2.4 五元组2.5 协议分层2.5.1 OSI七层模型2.5.2 TCP/IP五层模型 2.6 封装和分用2.6.1 数据封装(发送方情况)2.6.2 数据分用(接收方情况) 总结 1. 网络发展史…...

【sqlserver】配置管理器打不开

问题描述 无法连接到 WMI 提供程序。您没有权限或者该服务器无法访问。请注意&#xff0c;您只能使用SQL Server 配置管理器来管理 SQL Server 2005 和更高版本的服务 器。无效类[0x80041010] 解决方式: 命令提示符-右键-以管理员身份运行&#xff0c;再把以下代码执行一遍&…...

磁盘清理 | 已经卸载的软件还出现在应用和功能里怎么办?

一句话总结解决方法&#xff1a; 安装Geek Uninstaller,删除卸载残留。 问题描述&#xff1a; 最近磁盘满了&#xff0c;需要删除一些平时不常用的软件&#xff0c;但是发现一个问题。就是已经删除的软件&#xff0c;仍然会出现在“应用与功能”中。并且显示卸载图标为灰色&am…...

C++之异常

目录 一、C语言传统的处理错误的方式 二、C的异常 1、概念 2、关键字 3、基本格式 三、异常的抛出和捕获 1、异常的抛出和匹配原则 2、 在函数调用链中异常栈展开匹配原则 四、异常抛派生类&#xff0c;基类捕获 五、异常的重新抛出 六、异常安全 七、异常的优缺点…...

动态天气预报:Living Weather HD for Mac

Living Weather HD能够为Mac用户提供及时、准确、个性化的天气信息&#xff0c;并提供了丰富的定制选项&#xff0c;使用户能够更加方便地查看天气状况。 具有以下特点&#xff1a; 显示世界各地的准确天气预报和当地时间。自动探测出用户所在的首个地点&#xff0c;并通过搜…...

深度神经网络时与协方差矩阵

平时训练深度神经网络时&#xff0c;什么时候用到了协方差矩阵 在深度神经网络的平时训练过程中&#xff0c;一般情况下不直接使用协方差矩阵。然而&#xff0c;协方差矩阵的概念和相关性的考虑在某些情况下可以对网络的训练和优化起到一定的指导作用。 下面是一些与协方差矩…...

idea中java类属性(字段)链式赋值

很多人看到标题可能会想到 lombok 的 Builder&#xff0c;lombok 在国内用的挺多的&#xff0c;开源的组件中 mybatis-plus 中用到了这个&#xff0c;使用这个有一个问题就是通过对应 get 和 set 方法找不到对应的赋值方法&#xff0c;因为 lombok 使用了 apt 在编译期生成了相…...

vue通知(滚动)

1. li宽度不顾定 <template><div id"app"><div id"box" mouseover"clearLeft" mouseleave"setLeft"><ul :style"{ transform: translateX( left px) }" ref"cmdlist"><li v-for&qu…...

linux安装新版本git2、配置github-ssh。(centos、aws)

一、安装Git 1、yum默认版本git #1.安装git sudo yum install git -y #2.确认Git已经安装成功 git --version如果要安装较新版本&#xff0c;可以安装一个repo &#xff0c;但是我这第一次尝试失败了&#xff0c;执行完提示找不到git2u&#xff0c;ius repo也连不上。而且每次…...

毅速丨3D打印结合拓扑优化 让轻量化制造更容易

制造轻量化对于提高能源利用效率、提高产品性能和减少环境影响&#xff0c;推动制造业的绿色化、高质量发展具有重要的促进作用。 轻量化设计对许多领域都有着重要影响&#xff0c;尤其是那些需要降低能源消耗、提高运输效率或减少对环境影响的领域。如航空航天&#xff0c;轻量…...

6252: 【C1】【分支】比较大小(一)

目录 题目描述 输入 输出 样例输入 样例输出 提示 来源 C代码&#xff1a; 题目描述 输入两个整数&#xff0c;输出较大数&#xff08;两数相等输出任意一个&#xff09; 输入 两行 第一行一个整数&#xff1a;m 第二行一个整数&#xff1a;n ( -30000 < m , n…...

网工实验手册:RSTP如何配置?

1. 实验目的 熟悉RSTP的应用场景掌握RSTP的配置方法 想要华为数通配套实验拓扑和配置笔记的朋友们点赞关注&#xff0c;评论区留下邮箱发给你! 2. 实验拓扑 实验拓扑如图所示&#xff1a; 图&#xff1a;RSTP的配置 3. 实验步骤 &#xff08;1&#xff09; …...

uniapp开发h5引入第三方js(sdk)

manifest.json 应用配置 | uni-app官网 根据文档上描述需要自定义模板的场景为&#xff1a; 方法一&#xff1a; 起初以为是在原有的index.html基础上再新建一个html文件&#xff0c;在项目根目录建立一个template.h5.html&#xff08;仿照hello-uni-app项目&#xff09;&…...

TFCalc软件视频教程

1. TFCALC初级入门教程001-产品为什么要镀膜2. TFCALC初级入门教程002-设计膜系前准备3. TFCALC初级入门教程003-TFC菜单认识4. TFCALC初级入门教程004-软件基本操作15. TFCALC初级入门教程005-软件基本操作26. TFCALC初级入门教程006-软件基本操作37. TFCALC初级入门教程007-设…...

YOLO X Layout快速部署:systemd服务脚本守护app.py进程,异常自动重启

YOLO X Layout快速部署&#xff1a;systemd服务脚本守护app.py进程&#xff0c;异常自动重启 1. 项目简介与核心价值 YOLO X Layout是一个基于YOLO模型的智能文档版面分析工具&#xff0c;能够自动识别文档中的各种元素类型。这个工具特别适合需要处理大量文档的场景&#xf…...

Ubuntu软件仓库源全解析:官方、第三方与本地源的配置与实战

1. Ubuntu软件仓库源入门指南 刚接触Ubuntu的朋友可能会好奇&#xff0c;那些方便好用的软件都是从哪里来的&#xff1f;答案就在软件仓库源里。简单来说&#xff0c;软件仓库源就像是Ubuntu系统的"应用商店"&#xff0c;只不过它比普通应用商店更强大、更灵活。作为…...

基于 Qt C++ 开发一套集成阿里通义千问大模型的多模态智能应用终端

你想要基于 Qt C++ 开发一套**集成阿里通义千问大模型的多模态智能应用终端**,支持**图文音视频理解**,适配电商客服、工业质检、智能创作等阿里生态全场景,并具备高并发、高稳定性(日均调用超10亿次级别的架构设计)。 下面我给你一套**可直接落地的 Qt + 通义千问多模态…...

Java Loom插件部署实录(2024最新版IDEA/Eclipse兼容清单+离线安装包获取通道)

第一章&#xff1a;Java 项目 Loom 响应式编程转型指南Project Loom 与响应式编程并非互斥范式&#xff0c;而是可协同演进的技术路径。Loom 的虚拟线程&#xff08;Virtual Threads&#xff09;为传统阻塞式 I/O 密集型响应式栈&#xff08;如 Spring WebFlux Reactor&#x…...

如何在Mac上安装飞秋:跨平台局域网通信的终极解决方案

如何在Mac上安装飞秋&#xff1a;跨平台局域网通信的终极解决方案 【免费下载链接】feiq 基于qt实现的mac版飞秋&#xff0c;遵循飞秋协议(飞鸽扩展协议)&#xff0c;支持多项飞秋特有功能 项目地址: https://gitcode.com/gh_mirrors/fe/feiq 还在为Mac与Windows电脑之间…...

PHP怎么实现SAML单点登录_PHP企业级SSO解决方案【指南】

onelogin/php-saml 是 PHP 中最稳的 SAML 库&#xff0c;必须用 Auth 类全流程处理签名验签、时间校验等&#xff1b;SP ID 需与 IDP 完全一致&#xff1b;私钥须为 PEM 格式&#xff1b;SAMLResponse 必须由 processResponse() 全链路验证&#xff1b;属性为数组结构需安全取值…...

UG/NX二次开发环境配置避坑指南:从零搭建到模板验证(nx1980+vs2019)

1. 环境准备&#xff1a;软件安装与版本匹配 第一次接触UG/NX二次开发的朋友&#xff0c;最头疼的往往不是代码本身&#xff0c;而是环境配置这个"拦路虎"。我当初用NX1980VS2019组合配置环境时&#xff0c;光版本兼容性问题就折腾了大半天。这里先划重点&#xff1a…...

中兴光猫工厂模式解锁:zteOnu工具完整指南

中兴光猫工厂模式解锁&#xff1a;zteOnu工具完整指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫工厂模式解锁利器zteOnu是一款专为网络管理员和技术爱好者设计的开源工具…...

手把手教你用网线搞定华为S5735S交换机堆叠(iStack实战避坑)

华为S5735S交换机零成本堆叠实战&#xff1a;用网线搭建高可靠网络 在中小企业网络升级过程中&#xff0c;端口扩展和链路冗余往往是刚需&#xff0c;但专用堆叠模块和光模块的高成本常常让预算有限的网管望而却步。华为S5735S系列交换机支持通过普通以太网电口&#xff08;即R…...