• 最大的团队表现值


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

    ...

  • 相关阅读:
    2017年 JavaScript 框架回顾 -- 后端框架
    2017年 JavaScript 框架回顾 -- React生态系统
    2017年 JavaScript 框架回顾 -- 前端框架
    TypeScript VS JavaScript 深度对比
    优化Webpack构建性能的几点建议
    前端开发者常用的9个JavaScript图表库
    JavaScript 性能优化技巧分享
    基于低代码平台(Low Code Platform)开发中小企业信息化项目
    SoapUI实践:自动化测试、压力测试、持续集成
    JavaScript中的内存泄漏以及如何处理
  • 原文地址:https://www.cnblogs.com/gulangyuzzz/p/12498339.html
Copyright © 2020-2023  润新知