leetcode2141 同时运行 N 台电脑的最长时间
思路:
二分。
实现:
1 class Solution 2 { 3 public: 4 bool check(vector<int>& nums, long long x, int n) 5 { 6 int l = nums.size(); 7 long long sum = 0; 8 for (int i = 0; i < l; i++) 9 { 10 sum += min((long long)nums[i], x); 11 } 12 return sum >= x * n; 13 } 14 15 long long maxRunTime(int n, vector<int>& batteries) 16 { 17 long long l = 0, r = accumulate(batteries.begin(), batteries.end(), 0ll)/n; 18 long long res = 0; 19 while (l <= r) 20 { 21 long long m = l + r >> 1; 22 if (check(batteries, m, n)) { res = m; l = m + 1; } 23 else r = m - 1; 24 } 25 return res; 26 } 27 };