链接:
[2594. 修车的最少时间](https://leetcode.cn/problems/form-smallest-number-from-two-digit-arrays/)
题意:
一个能力R的人R*N*N分钟修N辆车,求最快多久修完(多人多车)
解:
二分很好想,主要是怎么检查(数学废物润去看题解了)
实际代码:
c++
long long repairCars(vector<int>& ranks, int cars)
{
typedef long long int ll;
sort(ranks.begin(),ranks.end());
ll l=1,r=1ll*ranks[ranks.size()-1]*pow(cars,2);
while(l<r)
{
ll m =(l+r)>>1;
ll cnt=0;
for(auto rank:ranks) cnt+=sqrt(m/rank);
if(cnt>=cars) r=m;
else l=m+1;
}
return l;
}
限制:
1 <= ranks.length <= 105
1 <= ranks[i] <= 100
1 <= cars <= 106