zoukankan      html  css  js  c++  java
  • 最大的团队表现值

    公司有编号为 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

    思路:堆 + 贪心 + 排序

    建立速度与效率的结构体,按照效率从高到低排序,优先队列维护的是在当前的效率之下速度最快的k个人,从前往后枚举一遍,

    求出团队的最大值

    class Solution {
    public:
        typedef long long LL ;
        typedef pair<int,int> PII ;
        int maxPerformance(int n, vector<int>& speed, vector<int>& efficiency, int k) {
            PII s[n] ;
            for(int i=0;i<n;i++){
                s[i] = {efficiency[i],speed[i]} ;
            }
            sort(s,s+n,[&](PII &P,PII &Q)->bool{//lambda表达式
                return P.first > Q.first ;
            }) ;
            priority_queue<int,vector<int>,greater<int>> pq ;
            LL ans = 0, e = 0,sum = 0 ;
            for(int i=0;i<n;i++){
                e = s[i].first ;
                sum += s[i].second ;
                pq.push(s[i].second) ;
                if(k--<=0){
                    sum -= pq.top() ;
                    pq.pop() ;
                }
                ans = max(ans,sum*e) ;
            }
            return ans % 1000000007 ;
        }
    };

    ...

  • 相关阅读:
    Visual C++ 打印编程技术-内存设备环境
    MySQL存储引擎
    记录阿里云服务器docker安装wordpress
    记录dockerfile参数
    记录一次 在公网使用FRP内网穿透开源软件,通过SSH连接内网服务器
    记录一次docker安装zabbix5.0
    记录一次zabbix邮件告警搭建过程和问题处理
    记录一次yum-config-manager命令的使用
    记录一次解决zabbix5.0图形化界面文字乱码的问题
    记录一次查看本地端口10050被哪个IP地址访问
  • 原文地址:https://www.cnblogs.com/gulangyuzzz/p/12498339.html
Copyright © 2011-2022 走看看