LeetCode 1599. 经营摩天轮的最大利润(模拟)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

你正在经营一座摩天轮,该摩天轮共有 4 个座舱 ,每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱,但每次轮转都需要支付一定的运行成本 runningCost 。摩天轮每次轮转都恰好转动 1 / 4 周

给你一个长度为 n 的数组 customers , customers[i] 是在第 i 次轮转(下标从 0 开始)之前到达的新游客的数量。这也意味着你必须在新游客到来前轮转 i 次。每位游客在登上离地面最近的座舱前都会支付登舱成本 boardingCost ,一旦该座舱再次抵达地面,他们就会离开座舱结束游玩。

你可以随时停下摩天轮,即便是 在服务所有游客之前 。如果你决定停止运营摩天轮,为了保证所有游客安全着陆,将免费进行所有后续轮转 。注意,如果有超过 4 位游客在等摩天轮,那么只有 4 位游客可以登上摩天轮,其余的需要等待 下一次轮转 。

返回最大化利润所需执行的 最小轮转次数 。 如果不存在利润为正的方案,则返回 -1 。

示例 1:
在这里插入图片描述

输入:customers = [8,3], boardingCost = 5, runningCost = 6
输出:3
解释:座舱上标注的数字是该座舱的当前游客数。
1. 8 位游客抵达,4 位登舱,4 位等待下一舱,摩天轮轮转。当前利润为 4 * $5 - 1 * $6 = $142. 3 位游客抵达,4 位在等待的游客登舱,其他 3 位等待,摩天轮轮转。当前利润为 8 * $5 - 2 * $6 = $283. 最后 3 位游客登舱,摩天轮轮转。当前利润为 11 * $5 - 3 * $6 = $37 。
轮转 3 次得到最大利润,最大利润为 $37 。示例 2:
输入:customers = [10,9,6], boardingCost = 6, runningCost = 4
输出:7
解释:
1. 10 位游客抵达,4 位登舱,6 位等待下一舱,摩天轮轮转。当前利润为 4 * $6 - 1 * $4 = $202. 9 位游客抵达,4 位登舱,11 位等待(2 位是先前就在等待的,9 位新加入等待的),摩天轮轮转。当前利润为 8 * $6 - 2 * $4 = $403. 最后 6 位游客抵达,4 位登舱,13 位等待,摩天轮轮转。当前利润为 12 * $6 - 3 * $4 = $604. 4 位登舱,9 位等待,摩天轮轮转。当前利润为 * $6 - 4 * $4 = $805. 4 位登舱,5 位等待,摩天轮轮转。当前利润为 20 * $6 - 5 * $4 = $1006. 4 位登舱,1 位等待,摩天轮轮转。当前利润为 24 * $6 - 6 * $4 = $1207. 1 位登舱,摩天轮轮转。当前利润为 25 * $6 - 7 * $4 = $122 。
轮转 7 次得到最大利润,最大利润为$122 。示例 3:
输入:customers = [3,4,0,5,1], boardingCost = 1, runningCost = 92
输出:-1
解释:
1. 3 位游客抵达,3 位登舱,0 位等待,摩天轮轮转。当前利润为 3 * $1 - 1 * $92 = -$892. 4 位游客抵达,4 位登舱,0 位等待,摩天轮轮转。当前利润为 is 7 * $1 - 2 * $92 = -$1773. 0 位游客抵达,0 位登舱,0 位等待,摩天轮轮转。当前利润为 7 * $1 - 3 * $92 = -$2694. 5 位游客抵达,4 位登舱,1 位等待,摩天轮轮转。当前利润为 12 * $1 - 4 * $92 = -$3565. 1 位游客抵达,2 位登舱,0 位等待,摩天轮轮转。当前利润为 13 * $1 - 5 * $92 = -$447 。
利润永不为正,所以返回 -1 。示例 4:
输入:customers = [10,10,6,4,7], boardingCost = 3, runningCost = 8
输出:9
解释:
1. 10 位游客抵达,4 位登舱,6 位等待,摩天轮轮转。当前利润为 4 * $3 - 1 * $8 = $42. 10 位游客抵达,4 位登舱,12 位等待,摩天轮轮转。当前利润为 8 * $3 - 2 * $8 = $83. 6 位游客抵达,4 位登舱,14 位等待,摩天轮轮转。当前利润为 12 * $3 - 3 * $8 = $124. 4 位游客抵达,4 位登舱,14 位等待,摩天轮轮转。当前利润为 16 * $3 - 4 * $8 = $165. 7 位游客抵达,4 位登舱,17 位等待,摩天轮轮转。当前利润为 20 * $3 - 5 * $8 = $206. 4 位登舱,13 位等待,摩天轮轮转。当前利润为 24 * $3 - 6 * $8 = $247. 4 位登舱,9 位等待,摩天轮轮转。当前利润为 28 * $3 - 7 * $8 = $288. 4 位登舱,5 位等待,摩天轮轮转。当前利润为 32 * $3 - 8 * $8 = $329. 4 位登舱,1 位等待,摩天轮轮转。当前利润为 36 * $3 - 9 * $8 = $36 。
​​​​​​​10. 1 位登舱,0 位等待,摩天轮轮转。当前利润为 37 * $3 - 10 * $8 = $31 。
轮转 9 次得到最大利润,最大利润为 $36 。提示:
n == customers.length
1 <= n <= 105
0 <= customers[i] <= 50
1 <= boardingCost, runningCost <= 100

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-profit-of-operating-a-centennial-wheel
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {
public:int minOperationsMaxProfit(vector<int>& customers, int boardingCost, int runningCost) {if(boardingCost*4 <= runningCost)//肯定挣不到钱return -1;int t = -1, maxProfit = INT_MIN, profit=0, n = customers.size();int people = 0, getup;for(int i = 0; i < n || people > 0; i++){if(i < n)//来了多少游客people += customers[i];if(people > 0)//还有游客在等待{getup = min(4, people);//一次上去最多4个profit += getup*boardingCost;//收入people -= getup;//游客少了几个}profit -= runningCost;//一次运行成本if(profit > maxProfit)//更新最大值{maxProfit = profit;if(maxProfit > 0)t = i+1;}}return t;}
};

356 ms 79.6 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

LeetCode 1600. 皇位继承顺序(图的深度优先遍历)

文章目录1. 题目2. 解题1. 题目 一个王国里住着国王、他的孩子们、他的孙子们等等。每一个时间点&#xff0c;这个家庭里有人出生也有人死亡。 这个王国有一个明确规定的皇位继承顺序&#xff0c;第一继承人总是国王自己。我们定义递归函数 Successor(x, curOrder) &#xff…

Java泛型,枚举,注解

Java泛型&#xff0c;枚举&#xff0c;注解 1 泛型 1.1 什么是泛型 泛型&#xff1a;即参数化类型。在不创建新的类型的情况下&#xff0c;通过泛型指定的不同类型来控制形参具体限制的类型。允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值…

LeetCode 1601. 最多可达成的换楼请求数目(回溯+剪枝)

文章目录1. 题目2. 解题1. 题目 我们有 n 栋楼&#xff0c;编号从 0 到 n - 1 。每栋楼有若干员工。由于现在是换楼的季节&#xff0c;部分员工想要换一栋楼居住。 给你一个数组 requests &#xff0c;其中 requests[i] [fromi, toi] &#xff0c;表示一个员工请求从编号为 …

LeetCode 767. 重构字符串(堆)

文章目录1. 题目2. 解题1. 题目 给定一个字符串S&#xff0c;检查是否能重新排布其中的字母&#xff0c;使得两相邻的字符不同。 若可行&#xff0c;输出任意可行的结果。若不可行&#xff0c;返回空字符串。 示例 1: 输入: S "aab" 输出: "aba"示例 2…

LeetCode 729. 我的日程安排表 I(set 二分查找)

文章目录1. 题目2. 解题2.1 set 二分查找2.2 差分思想1. 题目 实现一个 MyCalendar 类来存放你的日程安排。如果要添加的时间内没有其他安排&#xff0c;则可以存储这个新的日程安排。 MyCalendar 有一个 book(int start, int end)方法。 它意味着在 start 到 end 时间内增加…

开源代码分析技巧之——打印调用逻辑

开源代码分析技巧之——打印调用逻辑 在研究开源代码时&#xff0c;大家或许都有这样的感慨&#xff1a; &#xff08;1&#xff09;代码太庞大&#xff0c;少则几万行代码&#xff0c;多则几百万行代码&#xff0c;不知道如何入手&#xff1b; &#xff08;2&#xff09;相关的…

LeetCode 731. 我的日程安排表 II(set二分查找 / 差分思想)

文章目录1. 题目2. 解题2.1 set 二分查找2.2 差分思想1. 题目 实现一个 MyCalendar 类来存放你的日程安排。如果要添加的时间内不会导致三重预订时&#xff0c;则可以存储这个新的日程安排。 MyCalendar 有一个 book(int start, int end)方法。 它意味着在 start 到 end 时间…

05.序列模型 W1.循环序列模型

文章目录1. 为什么选择序列模型2. 数学符号3. 循环Recurrent 神经网络模型4. 通过时间的反向传播5. 不同类型的循环神经网络6. 语言模型和序列生成7. 对新序列采样8. 循环神经网络的梯度消失9. Gated Recurrent Unit&#xff08;GRU单元&#xff09;10. LSTM&#xff08;long s…

LeetCode 802. 找到最终的安全状态(逆向图+拓扑排序)

文章目录1. 题目2. 解题1. 题目 在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走。 如果我们到达的节点是终点 (即它没有连出的有向边), 我们停止。 现在, 如果我们最后能走到终点&#xff0c;那么我们的起始节点是最终安全的。 更具体地说, 存在一个自然数 K…

05.序列模型 W1.循环序列模型(作业:手写RNN+恐龙名字生成)

文章目录作业1&#xff1a;建立你的循环神经网络1. RNN 前向传播1.1 RNN 单元1.2 RNN 前向传播2. LSTM 网络2.1 LSTM 单元2.2 LSTM 前向传播3. RNN 反向传播3.1 基础 RNN 反向传播3.2 LSTM 反向传播3.3 LSTM RNN网络反向传播作业2&#xff1a;字符级语言模型&#xff1a;恐龙岛…

SQL2008中Merge的用法

SQL2008中Merge的用法 在SQL2008中&#xff0c;新增了一个关键字&#xff1a;Merge&#xff0c;这个和Oracle的Merge的用法差不多&#xff0c;只是新增了一个delete方法而已。下面就是具体的使用说明&#xff1a; 首先是对merge的使用说明&#xff1a; merge [into][目标表]usi…

LeetCode 1146. 快照数组(哈希map + 有序map)

文章目录1. 题目2. 解题1. 题目 实现支持下列接口的「快照数组」- SnapshotArray&#xff1a; SnapshotArray(int length) - 初始化一个与指定长度相等的 类数组 的数据结构。初始时&#xff0c;每个元素都等于 0。void set(index, val) - 会将指定索引 index 处的元素设置为…

LeetCode 825. 适龄的朋友(计数排序+前缀和)

文章目录1. 题目2. 解题1. 题目 人们会互相发送好友请求&#xff0c;现在给定一个包含有他们年龄的数组&#xff0c;ages[i] 表示第 i 个人的年龄。 当满足以下任一条件时&#xff0c;A 不能给 B&#xff08;A、B不为同一人&#xff09;发送好友请求&#xff1a; age[B] <…

LeetCode 954. 二倍数对数组(map计数)

文章目录1. 题目2. 解题1. 题目 给定一个长度为偶数的整数数组 A&#xff0c;只有对 A 进行重组后可以满足 对于每个 0 < i < len(A) / 2&#xff0c;都有 A[2 * i 1] 2 * A[2 * i] 时&#xff0c;返回 true&#xff1b;否则&#xff0c;返回 false。 示例 1&#xf…

LeetCode 732. 我的日程安排表 III(差分思想)

文章目录1. 题目2. 解题1. 题目 实现一个 MyCalendar 类来存放你的日程安排&#xff0c;你可以一直添加新的日程安排。 MyCalendar 有一个 book(int start, int end)方法。它意味着在start到end时间内增加一个日程安排&#xff0c;注意&#xff0c;这里的时间是半开区间&…

05.序列模型 W2.自然语言处理与词嵌入

文章目录1. 词汇表征2. 使用词嵌入3. 词嵌入的特性4. 嵌入矩阵5. 学习词嵌入6. Word2Vec7. 负采样8. GloVe 词向量9. 情感分类10. 词嵌入除偏作业参考&#xff1a;吴恩达视频课深度学习笔记自然语言处理与词嵌入 Natural Language Processing and Word Embeddings 1. 词汇表征…

Hadoop学习之HDFS

Hadoop学习之HDFS 1 HDFS相关概念 1.1 设计思路 分散存储&#xff0c;冗余备份。 分散存储&#xff1a;大文件被切割成小文件&#xff0c;使用分而治之的思想让多个服务器对同一个文件进行联合管理&#xff1b; 冗余备份&#xff1a;每个小文件做冗余备份&#xff0c;并且…

LeetCode 799. 香槟塔(DP动态规划)

文章目录1. 题目2. 解题1. 题目 我们把玻璃杯摆成金字塔的形状&#xff0c;其中第一层有1个玻璃杯&#xff0c;第二层有2个&#xff0c;依次类推到第100层&#xff0c;每个玻璃杯(250ml)将盛有香槟。 从顶层的第一个玻璃杯开始倾倒一些香槟&#xff0c;当顶层的杯子满了&…

天池在线编程 2020国庆八天乐 - 7 进制

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/118289365933779217/122647324212270017 Given an integer, return its base 7 string representation. 输入范围为[-1e7, 1e7] 。 示例 样例 1: 输入: num 100 输出: 202样例 2: 输入: num -7 输出: -102.…

Hadoop学习之MapReduce

Hadoop学习之MapReduce 目录 Hadoop学习之MapReduce 1 MapReduce简介 1.1 什么是MapReduce 1.2 MapReduce的作用 1.3 MapReduce的运行方式 2 MapReduce的运行机制 2.1 相关进程 2.2 MapReduce的编程套路 2.3 MapTask的并行度 2.4 切片及其源码解读 2.5 ReduceTask的…