二分
2026/9/5 5:41:11 网站建设 项目流程

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);
}
};

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询