【力扣1599】 经营摩天轮的最大利润
创始人
2024-05-29 00:09:44
0

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

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

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

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

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/maximum-profit-of-operating-a-centennial-wheel

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我一开始盯着那个免费进行后续轮转看了半天,不知道是我不需要向那些游客额外收费还是我不需要被收轮转费。后来写了测试了才知道,是我后续旋转都不用花钱。

题这么长,有点像csp了哈哈。

这道题我的选择是记下结果,每次只要加一个小量就可以了。做过之前的题目的对这种方法应该比较熟悉。另外我记了一人,二人,三人,四人登机的价格,这样也减少计算量。

其它都很简单,记得不要搞错轮转次数。

class Solution {
public:int minOperationsMaxProfit(vector& customers, int boardingCost, int runningCost) {int gainmoney=0;int wait=0;int num[5];int maxmoney=0;int cont=-1;int extracost=3*runningCost;for(int i=0;i<=4;++i){num[i]=boardingCost*i;}if(num[4]<=runningCost){return -1;}int l=customers.size();int i;for(i=0;imaxmoney){cont=i+1;maxmoney=gainmoney;} }while(wait!=0){gainmoney+=num[min(4,wait)];gainmoney-=runningCost;wait=max(0,wait-4);int tempmoney=gainmoney-extracost;if(gainmoney>maxmoney){cont=i+1;maxmoney=gainmoney;} i++;}if(maxmoney

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...