一開始想的是dp,發現記憶體太大了,不太可能。
後來往排序預處理方面想,思路就來了,因為是 「所有工程師速度的和」乘以他們「效率值中的最小值」,所以只需要維護前面的前k個最大組成的和,用乙個堆組成。最低的效率就是當前的,因為排過序了。如果不排序,就很難維護最低效率,因為前面的不時有因為速度不夠大通過堆刪去,那怎樣找倒數第二的效率呢,很難。所以先按照效率由大到小排序,當前的就是效率最低的。
class solution ;
node nodes[100005];
static bool cmp(const node &a,const node &b)
return a.speed>b.speed;
}int maxperformance(int n, vector& speed, vector& efficiency, int k)
ans=max(ans,sum*nodes[i].efficiency);
}return ans%(1000000000 + 7);
}};
力扣貪心 1383 最大的團隊表現值
公司有編號為 1 到 n 的 n 個工程師,給你兩個陣列 speed 和 efficiency 其中 speed i 和 efficiency i 分別代表第 i 位工程師的速度和效率。請你返回由最多 k 個工程師組成的 最大團隊表現值 由於答案可能很大,請你返回結果對 10 9 7 取餘後的結果。...
LeetCode 最大矩形
q 給出乙個只包含0和1的二維矩陣,找出最大的全部元素都是1的長方形區域,返回該區域的面積。a 這個題感覺蠻巧妙的。如果這個點為 1 先計算當前行的最大寬度,這說明最大寬度左邊的都是保證可以是矩形的。然後往上看,用最小的寬度和當前的高度計算最大的矩形。看圖 同理,高度也可以這麼做。另一種就是參考計算...
leetcode 禮物的最大價值
在乙個 m n 的棋盤的每一格都放有乙個禮物,每個禮物都有一定的價值 價值大於 0 你可以從棋盤的左上角開始拿格仔裡的禮物,並每次向右或者向下移動一格 直到到達棋盤的右下角。給定乙個棋盤及其上面的禮物的價值,請計算你最多能拿到多少價值的禮物?示例 1 輸入 1,3,1 1,5,1 4,2,1 輸出 ...