leetcode刷题日记之做菜顺序

news2024/11/18 19:40:50

在这里插入图片描述

原题链接: 做菜顺序

一个厨师收集了他 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 系数。

​ 这道题首先看到时候直接看示例,题目中首先给出了做菜的顺序可以选择,还可以选择不做菜,即保证like-time的最大值。我们很容易就想到贪心,这道题也就是典型的保证最大值的贪心思维。

​ 首先要理解第一个关键点,要保证like-time值最大首先要保证最大值*最大系数,最大系数也就是做菜的顺序,即保证like值最大的菜最后做,大大相乘保证最大,小小相乘保证最小。

​ 第二个关键点,负like值菜会影响两个值的变化,一个是做菜数量的变化一个是做菜顺序的变化。即负like值先做会引起后面菜的顺序延后,系数增大。

​ 因此对于这道题,我们首先要保证两个点,先去定一个较大值,在通过调整负like菜品的做菜顺序观察是否会引起like-time的增加,再逐步调整。

第一步排序:保证低like值在低位,高like值在高位
在这里插入图片描述
第二步划分:有负值like才会通过增加负值like*低系数来增加做菜数目进而调整高位系数。换句话说无负值like值按照排序了后进行做菜即能保证最大

进行负数统计,在负值计入做菜后,要保证负值like*低位影响最小,需要按照排序了后的顺序依次向前模拟;

0*1+5*2 = 10为第一次模拟,接着向前模拟,保证最大值的贪心进行模拟。此时假设最大值max=10;

-1*1+0*2+5*3=14为第二次模拟,接着向前模拟,以保证能继续获得最大like-time。此时最大值max=14更新;

-9*1±1*2+0*3+5*4=9为第三次模拟,接着就算继续向前模拟,也不能保证获得最大like-time。此时最大值14不更新。程序结束返回max;

实现细节:首先我们需要排序了后统计负值,统计负值的个数也就是正值出现的第一次下标。

#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
int cmp(const void* a, const void* b)
{
    return (*(int*)a - *(int*)b);
}
int maxSatisfaction(int* satisfaction, int satisfactionSize)
{
    int* tmp = (int*)malloc(satisfactionSize*4);
    memcpy(&tmp, &satisfaction, sizeof(int));//开辟空间拷贝原数组
    qsort(tmp, satisfactionSize, 4, cmp);//排序了
    int i = 0;
    int flog = 0;
    int sum = 0;
    int like_time = 0;
    int max = 0;
    for (i = 0; i < satisfactionSize; i++)
    {
        if (satisfaction[i] < 0)
        {
            flog++;
        }
        else
        {
            break;
        }
    }
    for (int j = 1; j <= satisfactionSize - flog; j++)
    {
        sum += satisfaction[j + flog - 1] * j;
    }
    if (max < sum)
    {
        max = sum;
    }
    while (flog > 0)
    {
        flog--;
        for (int j = 1; j <= satisfactionSize - flog; j++)
        {
            like_time += satisfaction[j + flog - 1] * j;
        }
        if (like_time < max)
        {
            like_time = max;
            break;
        }
        else
        {
            max = like_time;
            like_time = 0;
        }
    }
    if (like_time < max)
    {
        like_time = max;
    }
    free(tmp);

    return max;
}

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

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

相关文章

【点云学习PCL 】一

点云学习 说明&#xff1a;仅做学习使用&#xff0c;侵删 参考网址1 一、点云基础 0 概述 PCL&#xff08;Point Cloud Library&#xff09;是用于 2D/3D 图像和点云处理的大型开源跨平台的 C 编程库&#xff0c;PCL 框架实现了大量点云相关的通用算法和高效的数据结构&…

Bytebase 2.10.0 - 支持更灵活的变更发布人:指定任意角色或自定义审批流的最后节点

&#x1f680; 新功能 发布策略支持制定更灵活的变更发布人&#xff1a;可以指定任意角色集合&#xff0c;也可以指定自定义审批流的最后一个审批人。 支持在项目中创建分支保护规则。支持给数据库设置标签。支持给字段设置标签。支持给表设置分类分级。 &#x1f384; 改进 …

C# Winform编程(10)Chart图表控件

Chart控件 Chart控件Chart属性详述Chart属性设置图表样式属性数据样式属性图例样式图标区样式SeriesChartType类型 Chart控件鼠标滚轮事件特殊处理Series绑定数据演示代码鼠标滚轮缩放图表示例参考引用 Chart控件 Chart控件是微软自带的一种图形可视化组件&#xff0c;使用简单…

node开发微信群聊机器人第⑤章

▍PART 序 看本文时&#xff0c;请确保前4章都已经看过&#xff0c;不然本章你看着看着思维容易跳脱&#xff01;再一个机器人教程只在公众号&#xff1a;“程序员野区”首发。csdn会跟着发一份&#xff0c;未经博主同意&#xff0c;请勿转载&#xff01;欢迎分享到自己的微信…

前端入门(一)JavaScript语法、数据类型、运算、函数

文章目录 概念JavaScript编写的位置基本语法数据类型变量声明var、let、constundefined与null的区别字符串类型数组Map和Set函数定义与参数传递 变量的作用域let、const方法的定义与调用常用内部对象json对象原型操作BOM对象操作DOM对象表单操作&#xff08;验证&#xff09;MD…

年轻人开发谁用默认背景?我直接美图安排上

文章目录 一、你还在用传统的开发界面吗二、年轻人的界面 1.动漫型2.偶像型3.提神型 三、更换背景的操作 第一步第二步第三步 一、你还在用传统的开发界面吗 不比不知道&#xff0c;一比吓一跳&#xff0c;都2023年了&#xff0c;你还在用Pycharm的默认背景写代码吗&#xf…

面试必考精华版Leetcode215. 数组中的第K个最大元素

题目&#xff1a; 代码&#xff08;2023年10月27日首刷看解析&#xff09;&#xff1a; class Solution { public:int findKthLargest(vector<int>& nums, int k) {return quickselect(nums,k);}int quickselect(vector<int>& nums,int k){vector<int&…

【Axure教程】中继器制作树元件

树元件在计算机科学和软件工程中常常用于构建和操作树形数据结构&#xff0c;提供了一种有效的方式来处理和查询具有层次性关系的数据&#xff0c;使开发人员能够更容易地组织和检索信息&#xff0c;用于组织和管理数据&#xff0c;具有各种应用。 那Axure里面也自带了一个树元…

C++中invoke与function的区别

C invoke invoke是C17标准引入的一个函数模板&#xff0c;用来调用可调用对象&#xff08;Callable Object&#xff0c;如函数指针、函数对象、成员函数指针等&#xff09;并返回结果。 invoke提供了统一的调用语法&#xff0c;无论可调用对象的类型是什么&#xff0c;都可以…

工业自动化产品抗干扰笔记

工业自动化产品抗干扰笔记 名词解释&#xff1a; 耦合矢量控制寄生振荡热噪点闪变噪点尖峰噪点反电势集肤效应交流电阻感抗容抗寄生电容共模与差模电场和磁场漏电流浪涌电压电流传输与电压传输各种地线解析 一、干扰来源&#xff1a; 任何一个电磁干扰现象都具有电磁干扰源…

大促期间的窜货低价怎么处理

产品窜货往往会伴随低价&#xff0c;所以监测窜货就是要先监测低价&#xff0c;当然有些产品卖价不低价也窜货&#xff0c;但这些正价或者高价卖的链接对渠道影响并不太大&#xff0c;所以治理低价窜货更重要。 力维网络专业为品牌提供窜货治理&#xff0c;低价监测的需求&…

NodeRed Modbus学习一(配置Modsim32)

新手小白 第一次使用这个玩意 会弹出一个小白框&#xff0c;不用管它。 新建File 下面两张图可以看出值在变化 通过下图可以看出还没有链接 创建连接 好了

在项目管理中,项目经理要控制这三个重要因素:进度、成本、质量

项目管理贯穿项目的整个生命周期&#xff0c;对项目的整个过程进行管理&#xff0c;对项目进行计划、组织、指导和控制的手段。 在项目的生命周期内&#xff0c;进行资源的配置和协调&#xff0c;做出科学决策&#xff0c;从而使项目执行的全过程处于最佳的运行状态&#xff…

04.Animation

参考JusterZhu视频和文档&#xff0c;ppt文档基本全抄 基本没看懂&#xff0c;过几天有时间了研究下 一、Animation 1.什么是Animation&#xff1f; 动画是快速循环播放一系列图像&#xff08;其中每个图像与下一个图像略微不同&#xff09;给人造成的一种幻觉。再回到WPF开发…

微信公众号分销商城源码系统+多商户入驻+互动直播+整点秒杀 带部署教程

今天罗峰来给大家分享一款微信公众号分销商城源码系统。微信公众号的普及以及电商行业的兴起&#xff0c;一种新型的商业模式——微信公众号分销商城应运而生。这种模式通过微信平台&#xff0c;将线上与线下的商业活动完美结合&#xff0c;为企业提供了更广阔的销售渠道。以下…

如何在群晖NAS中搭建WebDav服务,并实现公网访问

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 1. 在群晖套件中心安装WebDav Server套件1.1 安装完成后&#xff0c;启动webdav服务&#xff0c;并勾选HTTP复选…

stable-diffusion-webui环境部署

stable-diffusion-webui环境部署 1. 环境创建2. 安装依赖库3.下载底模4.运行代码5. 报错信息报错1报错2 1. 环境创建 创建虚拟环境 conda create -n env_stable python3.10.0进入虚拟环境 conda activate env_stableclone源码 git clone https://github.com/AUTOMATIC1111/stab…

设备管理软件管理系统

从设备检查到设备保养&#xff0c;再到设备维护&#xff0c;全方位视角掌握设备状态的管理软件。让企业员工可以随时随地的查看设备的各种信息&#xff1a;巡检信息、保养计划、备件更换提醒、维修保养资料等。 1、一物一码&#xff0c;建立设备电子档案“身份证” 精准管控每一…

31 select max/min/avg/sum/count/group_concat 的实现

前言 avg, sum, max, min, count 的相关使用 这里来调试一下 具体的情况, 以及看一下 索引对于相关操作的影响 测试数据表如下 CREATE TABLE tz_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,field1 varchar(12) DEFAULT NULL,field2 varchar(16) DEFAULT NULL,PRI…

漏洞复现--企望制造ERP系统 RCE

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…