lc2226
二分 ,在“每个小孩分到的糖果数”的可能范围内(1到最大堆糖果数)
check 判断该数量能否分给至少k个小孩
最终找到最大的可行数量
class Solution {
typedef long long ll;
public:
int maximumCandies(vector<int>& candies, long long k)
{
ll l = 1, r = *max_element(candies.begin(), candies.end());
int n=candies.size();
auto check=[&](ll m)->bool
{
ll cnt=0;
for(int i=0;i<n;i++)
cnt += (candies[i]/m);
return cnt >= k;
};
while(l <= r)
{
ll m = l + (r - l)/2;
if(check(m))
l = m + 1;
else
r = m - 1;
}
return (int)(l-1);
}
};