LeetCode 2813.子序列最大优雅度

给你一个长度为 n 的二维整数数组 items 和一个整数 k 。

items[i] = [profiti, categoryi],其中 profiti 和 categoryi 分别表示第 i 个项目的利润和类别。

现定义 items 的 子序列 的 优雅度 可以用 total_profit + distinct_categories^2 计算,其中 total_profit 是子序列中所有项目的利润总和,distinct_categories 是所选子序列所含的所有类别中不同类别的数量。

你的任务是从 items 所有长度为 k 的子序列中,找出 最大优雅度 。

用整数形式表示并返回 items 中所有长度恰好为 k 的子序列的最大优雅度。

注意:数组的子序列是经由原数组删除一些元素(可能不删除)而产生的新数组,且删除不改变其余元素相对顺序。

示例 1:

输入:items = [[3,2],[5,1],[10,1]], k = 2
输出:17
解释:
在这个例子中,我们需要选出长度为 2 的子序列。
其中一种方案是 items[0] = [3,2] 和 items[2] = [10,1] 。
子序列的总利润为 3 + 10 = 13 ,子序列包含 2 种不同类别 [2,1] 。
因此,优雅度为 13 + 2^2 = 17 ,可以证明 17 是可以获得的最大优雅度。 

示例 2:

输入:items = [[3,1],[3,1],[2,2],[5,3]], k = 3
输出:19
解释:
在这个例子中,我们需要选出长度为 3 的子序列。 
其中一种方案是 items[0] = [3,1] ,items[2] = [2,2] 和 items[3] = [5,3] 。
子序列的总利润为 3 + 2 + 5 = 10 ,子序列包含 3 种不同类别 [1, 2, 3] 。 
因此,优雅度为 10 + 3^2 = 19 ,可以证明 19 是可以获得的最大优雅度。

示例 3:

输入:items = [[1,1],[2,1],[3,1]], k = 3
输出:7
解释:
在这个例子中,我们需要选出长度为 3 的子序列。
我们需要选中所有项目。
子序列的总利润为 1 + 2 + 3 = 6,子序列包含 1 种不同类别 [1] 。
因此,最大优雅度为 6 + 1^2 = 7 。

提示:

  • 1 <= items.length == n <= 10^5
  • items[i].length == 2
  • items[i][0] == profiti
  • items[i][1] == categoryi
  • 1 <= profiti <= 10^9
  • 1 <= categoryi <= n
  • 1 <= k <= n

这道题的坑点在于他是变化的,不确定要变换种类数量还是要变换profit,那这种情况的话,只能先定住一个变量,我定的是profit,就是按profit排序之后先求出前k个的优雅度(当然并不能确定是不是最大的),并且把种类数放到一个集合里面,然后如果有相同种类的并且之前出现过了就把他放到arr数组里面当替补,后续就是从第k个开始到最后一个,如果有在集合未出现过的种类并且arr里面一定要有替补的profit,这样就替换profit,然后种类数加1,最后与原先的做比较,一直到arr空了或者已经没有未在集合里面出现过的种类,代码如下:

class Solution {
public:static bool cmp(vector<int>& a,vector<int>& b){return a[0] > b[0];}long long findMaximumElegance(vector<vector<int>>& items, int k) {sort(items.begin(),items.end(),cmp);unordered_set<int> st;vector<int> arr;long long profit_k = 0;for(int i=0;i<k;i++){profit_k += items[i][0];if(st.count(items[i][1])) arr.push_back(items[i][0]);st.insert(items[i][1]);}long long ans = profit_k + st.size() * st.size();for(int i=k;i<items.size();i++){if(!st.count(items[i][1]) && !arr.empty()){profit_k += items[i][0] - arr.back();arr.pop_back();st.insert(items[i][1]);int cn = st.size();ans = max(ans , profit_k + cn * cn);}}return ans ;}
};

加油

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

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

相关文章

Linux Mint 21.3简介

Linux Mint 21.3是一个更新版本&#xff0c;其中包含了许多新特性和改进。以下是一些主要更新内容&#xff1a; 1. Cinnamon 6.0桌面环境&#xff1a;Linux Mint 21.3采用了最新的Cinnamon 6.0桌面环境&#xff0c;带来了新的功能和改进&#xff0c;例如支持Wayland会话&#…

通勤路上的美好伴侣:倍思H1s头戴式蓝牙耳机

在繁忙的都市生活中,通勤往往占据了人们大量的时间。而在这个过程中,无尽的嘈杂声——公交车的播报声、地铁的轰鸣声、街头的喧嚣——往往成为我们心情的干扰源。在这样的环境下,一款优质的头戴式蓝牙耳机,会让我们的通勤之旅变得更加愉快和舒适。 通勤路上要更舒适—— 倍思…

道可云元宇宙每日资讯|微软称GPT的重点将转向商业和企业场景

道可云元宇宙每日简报&#xff08;2024年6月14日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 微软称GPT的重点将转向商业和企业场景 近日&#xff0c;微软于官网宣布将于2024年7月10日起停止其AI工具Copilot GPTs服务&#xff0c;同时将删除所有由用户创建的既…

LDR6023S:革新USB Type-C接口的完美伴侣

一、引言 随着科技的发展&#xff0c;USB Type-C接口以其高速传输、正反插等特性逐渐取代了传统的USB接口。而在这一背景下&#xff0c;LDR6023S作为一款USB Type-C转音频快充芯片&#xff0c;凭借其卓越的性能和广泛的应用场景&#xff0c;成为了市场上备受瞩目的产品。本文将…

CSP 第34次认证第四题 货物调度

题目链接 只想做一个30分解法。考场上写dfs只能过15分&#xff0c;不思其解。系统未开放评测。 将复现方法粘贴如下&#xff0c;开放数据后再进行测试。 #include <iostream> #include <vector> #include <set> #include <algorithm> #include <m…

西门子PLC位逻辑指令学习(SCL语言)

R_TRIG 参数 功能 当CLK信号出现一个低电平到高电平的跳变时&#xff0c;输出Q导通一个周期。 实例 定义以下类型变量 "R_TRIG_DB"(CLK:"data".source,Q>"data".result); //当source输入出现低电平到高电平跳变&#xff0c;result信号…

「计算机网络」初识http协议

前言 HTTP协议——互联网发展的基石&#xff0c;从一个最简单的“helloworld”网页&#xff0c;到现在博客平台、视频网站都离不开HTTP协议的存在。随着互联网的发展&#xff0c;Web网页的设计也越发复杂&#xff0c;前后端开发的分工也越发明确&#xff0c;HTTP作为连接前后端…

基于YOLO检测算法(单检测器网络+多视频输入)设计与实现

在单摄像头目标检测的基础上&#xff0c;实现单网络多线程的实时目标检测。 1&#xff0c;应用场景 在安防领域&#xff0c;YOLO的多摄像头实时目标检测应用具有以下特点和优势&#xff1a; 实时性能&#xff1a; YOLO算法以非常高的速度运行&#xff0c;能够实现实时目标检测…

力扣刷题--2843. 统计对称整数的数目【简单】

题目描述 给你两个正整数 low 和 high 。 对于一个由 2 * n 位数字组成的整数 x &#xff0c;如果其前 n 位数字之和与后 n 位数字之和相等&#xff0c;则认为这个数字是一个对称整数。 返回在 [low, high] 范围内的 对称整数的数目 。 示例 1&#xff1a; 输入&#xff1…

Web后端开发(分层解耦)

分层解耦 内聚&#xff1a; 软件中各个功能模块内部的功能联系。 耦合&#xff1a; 衡量软件中各个 层 / 模块之间的依赖、关联的程度。 软件设计原则&#xff1a;高内聚、低耦合。 控制反转&#xff1a; Inversion Of Control&#xff0c;简称IOC。对象的创建控制权由程序自身…

pytest + yaml 框架 - 65.Pycharm 设置 yaml 格式用例模板,高效写用例

前言 初学者对yaml 格式不太熟悉,自己写yaml用例的时候,总是格式对不齐,或者有些关键字会忘记。 于是我们可以在pycharm上设置用例模块,通过快捷方式调用出对应的模块,达到高效写用例的目的。 pycharm设置用例模板 File - Settings Live Templates - python 点 + 号…

扩展欧几里得算法——AcWing.877扩展欧几里得算法

扩展欧几里得算法 定义 扩展欧几里得算法是用来在已知整数 a、b 的情况下&#xff0c;求解一组整数 x、y 使得 ax by gcd(a, b)&#xff08;gcd 表示最大公约数&#xff09;。 运用情况 求解线性同余方程。在密码学等领域有广泛应用。 注意事项 要注意边界情况和特殊值…

找工作小项目:day15-macOS支持、完善逻辑

macOS支持、完善逻辑 目前的代码可以在Linux上完美运行编译&#xff0c;在Windows上也可以通过WSL编译运行源代码&#xff0c;但是在MacBook上却无法运行编译&#xff0c;这主要是由于macOS上没有epoll&#xff0c;取而代之的很相似的kqueue。由于操作系统不同&#xff0c;我们…

LED显示屏色差处理方法

LED显示屏以其高亮度、低功耗和长寿命等优点&#xff0c;在广告、信息发布和舞台背景等领域得到广泛应用。然而&#xff0c;由于生产批次的不同&#xff0c;LED显示屏在亮度和色度上可能存在差异&#xff0c;影响显示效果。本文将探讨如何通过逐点校正技术来解决这一问题。 逐点…

字节智能体平台:扣子原理和实践案例

完整内容&#xff1a; 字节智能体平台&#xff1a;扣子原理和实践案例

js的数据类型以及数据类型的判断

js的数据类型 在ECMAScript中有5中简单数据类型(基本数据类型) 分别是 Undefined, Null,Boolean,Number,String。在es6中引入了一个新基本数据类型是symbol。 还有复杂数据类型(引用类型) Object,本质上是由一组无序键值对组成的&#xff0c; Object, Array, function。 数据…

JVM 生产环境优化

如果一台机器上,有多个独立java程序,比如有5个独立java大型应用,只有总共32个CPU的情况下(现在普通的服务器几百个CPU了) -XX:ParallelGCThreads4 -XX:ConcGCThreads2 上面总线程数不易比如(42)*5<32,超过这个数字,容易引起资源竞赛,反而很大程度引起jvm 垃圾回收的时候停…

Navicat和SQLynx产品功能比较二(SQL查询)

数据库管理工具最常用的功能就是SQL的查询&#xff0c;没有之一。本文针对Navicat和SQLynx做了SQL查询相关的性能测试&#xff0c;从测试结果来看&#xff0c;Navicat主要适合开发类的小型数据量需求&#xff0c;SQLynx可以适应大型数据量或小型数据量的需求&#xff0c;用户可…

拓扑排序、关键路径(AOV、AOE网)

拓扑排序&#xff08;AOV网&#xff09; 相关知识 在现代化管理中&#xff0c;人们常用有向图来描述和分析一项工程的计划和实施过程&#xff0c;一个工程常被分为多个小的子工程&#xff0c;这些子工程被称为活动&#xff08;Activity)。 在有向图中若以顶点表示活动&#xff…

Sentence Transformers x SwanLab:可视化Embedding训练

Sentence Transformers(又名SBERT)是访问、使用和训练文本和图像嵌入&#xff08;Embedding&#xff09;模型的Python库。 你可以使用Sentence Transformers快速进行模型训练&#xff0c;同时使用SwanLab进行实验跟踪与可视化。 1. 引入SwanLabCallback from swanlab.integra…