2020-03-14

2020-03-15  本文已影响0人  ren91

5359. 最大的团队表现值

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

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

from queue import PriorityQueue

class Solution:

    def maxPerformance(self, n: int, speed: List[int], efficiency: List[int], k: int) -> int:

        arr = [(speed[i], efficiency[i]) for i in range(n)]

        arr.sort(key=lambda item:item[1], reverse=True)

        pq = PriorityQueue()

        sumk = 0

        res = 0

        MOD = 10**9 + 7

        for i in range(n):

            pq.put(arr[i][0])

            sumk += arr[i][0]

            if pq.qsize() > k:

                sumk -= pq.get()

            #若包含arr[i]则tempt为团队值,如果不包含则tempt < res

            tempt = sumk * arr[i][1]

            if tempt > res:

                res = tempt

        return res % MOD

上一篇 下一篇

猜你喜欢

热点阅读