1. 题目

公司有编号为 1 到 n 的 n 个工程师,给你两个数组 speed 和 efficiency ,其中 speed[i] 和 efficiency[i] 分别代表第 i 位工程师的速度和效率。
请你返回由最多 k 个工程师组成的 ​​​​​​最大团队表现值 ,由于答案可能很大,请你返回结果对 10^9 + 7 取余后的结果。

团队表现值 的定义为:一个团队中「所有工程师速度的和」乘以他们「效率值中的最小值」。

示例 1:
输入:n = 6, speed = [2,10,3,1,5,8], efficiency = [5,4,3,9,7,2], k = 2
输出:60
解释:
我们选择工程师 2(speed=10 且 efficiency=4)和工程师 5(speed=5 且 efficiency=7)。
他们的团队表现值为 performance = (10 + 5) * min(4, 7) = 60 。示例 2:
输入:n = 6, speed = [2,10,3,1,5,8], efficiency = [5,4,3,9,7,2], k = 3
输出:68
解释:
此示例与第一个示例相同,除了 k = 3 。我们可以选择工程师 1 ,
工程师 2 和工程师 5 得到最大的团队表现值。
表现值为 performance = (2 + 10 + 5) * min(5, 4, 7) = 68 。示例 3:
输入:n = 6, speed = [2,10,3,1,5,8], efficiency = [5,4,3,9,7,2], k = 4
输出:72提示:
1 <= n <= 10^5
speed.length == n
efficiency.length == n
1 <= speed[i] <= 10^5
1 <= efficiency[i] <= 10^8
1 <= k <= n

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

2. 解题

  • 参考大佬的思路:Ikaruga
  • 按照效率 ηi\eta_iηi​ 降序排序,遍历每个人
  • 最大团队值为 min⁡ηi∗∑speed\min \eta_i*\sum speedminηi​∗∑speed
  • ηi\eta_iηi​ 是下降的,那么效率高于 ηi\eta_iηi​ 的人在人数少于 kkk 的时候全部加入,使得第二项最大
  • 当人数超过 kkk 了,在 ηi\eta_iηi​ 下,比其效率高的人中,我要选出 speedspeedspeed 最大的 kkk 人
  • 这样,每个 ηi\eta_iηi​ 作为第一项的情况 都遍历过了,且每次遍历的时候,挑出来的人也都是 speedspeedspeed 最快的
class Solution {public:int maxPerformance(int n, vector<int>& speed, vector<int>& efficiency, int k) {vector<vector<int>> people;int i, e, s;long long maxPerf = 0, speedsum = 0;for(i = 0; i < speed.size(); ++i){people.push_back({efficiency[i], speed[i]});}sort(people.rbegin(), people.rend());//按照效率从大到小排序priority_queue<int, vector<int>,greater<int>> q;//小顶堆for(i = 0; i < speed.size(); ++i){e = people[i][0];//效率speedsum += people[i][1];//速度和k--;//人数-1q.push(people[i][1]);//速度队列,堆顶最小if(k < 0)//人超过k人了{speedsum -= q.top();//速度小的删除q.pop();}maxPerf = max(maxPerf, e*speedsum);//这里不要取模}return maxPerf%1000000007;}
};

LeetCode 1383. 最大的团队表现值(贪心,优先队列,难)相关推荐

  1. LeetCode题解(1383):最大的团队表现值(Python)

    题目:原题链接(困难) 标签:贪心算法.排序.堆 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(NlogN)O(NlogN)O(NlogN) O(N)O(N)O(N) 28 ...

  2. 对于个人(注册表)与团队(团队表)(两张表没有关联)的展示与可空判断

    对于个人(注册表)与团队(团队表)(两张表没有关联)的展示与可空判断 1,在Model中只有GroupId没有名称(GroupName),所以自己定义一个: /// <summary>// ...

  3. LeetCode刷题——哈希表(python语言)

    LeetCode刷题--哈希表(python语言) 一.哈希表 1.1 哈希表的概念 哈希表,也叫散列表.其实可以很像python的字典,也就是键(key)值(Hash(key))对,最简单也最常用的 ...

  4. HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解

    思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...

  5. 1163 最高的奖励(贪心+优先队列)

    有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励.在结束时间之前完成该任务,就可以获得对应的奖励.完成每一个任务所需的时间都是1个单位时间.有时候完成所有任务是不可能的,因为时间上可能会有冲突 ...

  6. 贪心+优先队列 HDOJ 5360 Hiking

    题目传送门 1 /* 2 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 3 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小, ...

  7. 贪心(优先队列) - New Year Snowmen - CodeForces - 140C

    贪心(优先队列) - New Year Snowmen - CodeForces - 140C 题意: 给定一个长度为n的正整数序列a1,a2,...,an.给定一个长度为n的正整数序列a_1,a_2 ...

  8. CodeForces 140C New Year Snowmen (贪心+优先队列)

    题意:n个数,选三个严格下降的数为一组,求最多能选多少组,并列出每组哪些数. 题解:贪心+优先队列 最多能选多少组,那么必须贪心数量多的. 例如:1 1 2 3 4 5 如果按照数的大小排序,只能贪到 ...

  9. CF140C New Year Snowmen(贪心+优先队列)

    CF140C 贪心+优先队列 贪心策略:每次取出数量最多的三种球,合成一个答案,再把雪球数都-1再插回去,只要还剩下三种雪球就可以不断地合成 雪球数用优先队列维护 #include <bits/ ...

最新文章

  1. 剑指offer :从尾到头打印链表
  2. 最大点权独立集---入门
  3. 微信小程序中base64格式的小程序码通过canvas画出来无效
  4. php todo和其他备注,Vim中列出TODO与FIXME等备注的方法
  5. linux系统实用脚本,常用linux系统命令及简单小脚本
  6. C语言指针和数组的天生姻缘
  7. C#中判断字符串相等的方法
  8. 使用JDBC来连接数据库
  9. Flutter实战一Flutter聊天应用(八)
  10. c++多数据平均数_定量分析中的几个概念-平均数、算数平均数、调和平均数以及权重及应用...
  11. Windows Event Log相关函数使用(1)
  12. CentOS ifconfig无IP地址解决办法
  13. 算法——K均值聚类算法(Java实现)
  14. 《锋利的jQuery》二、jQuery的选择器
  15. vue随笔1-element-UI中checkbook多选框-复选框样式修改
  16. php主机卫士,Bypass360主机卫士SQL注入防御八种姿势
  17. 剑指 Offer(C++版本)系列:剑指 Offer 10- I 斐波那契数列
  18. excel筛选栏显示各项数量_excel筛选显示数量
  19. Figma又崩了,但我们P事没有
  20. linux make命令error2,make命令出错,求解释。

热门文章

  1. 计算机工作原理 公开课,《计算机的基本工作原理》公开课材料(11页)-原创力文档...
  2. oracle重做日志教程,Oracle教程:重做日志文件基本维护
  3. eigen 列向量转矩阵_快速入门矩阵运算——开源库Eigen
  4. xcode8注释快捷键失效问题
  5. 剑指Offer 从尾到头打印链表
  6. Google Guava缓存实现接口的限流
  7. git命令:将多个commit提交记录修改为1条
  8. socket buffer套接字缓存
  9. RCF的优势--分布式应用
  10. 单线程会导致死锁吗?