首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用宝马取代hundai,使其最小化

用宝马取代hundai,使其最小化
EN

Stack Overflow用户
提问于 2018-10-09 14:26:42
回答 1查看 87关注 0票数 0

我们给出了两个阵列H B ,它们的大小都是nHi是指(i)th人拥有的呼达汽车的数量。我有m‘宝马汽车,我可以用hundai代替它。Bi包含相当于1宝马(意味着每个人的当量可能不同)的呼达汽车数量。Given:

代码语言:javascript
复制
H[i]%B[i]=0;

问题是最小化 max(Hi),代之以宝马(请注意,我们只有m宝马)。需要O(n)或O(nlogn)解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-09 17:32:43

围绕minimizing .. the maximum of ..的想法是可以使用二进制搜索的,我在这里回答了一个类似的问题:https://stackoverflow.com/a/52679263/10291310

对于你的情况,我们可以修改算法,

代码语言:javascript
复制
start = 0, end = 10^18 // Or your max `M` limit
while start <= end:
    bmw_used = 0 // Number of bmws used till now for this iteration
    mid = (start + end) / 2
    // Let's see if its possible to lower down all the hyndais such
    // that number of each hundai <= mid
    for i in range(0,N):
        if H[i] > mid:
            // Calculate the number of bmws required to bring H[i] <= mid
            bmw_required = ceil(1.0 * (H[i] - mid) / B[i])
            bmw_used += bmw_required
    // After iterating over the Hyndais
    if bmw_used > M:
        // We're exceeding the number of bmws, hence increase the number of huyndai
        start = mid + 1
    else:
        // We still have some more bmws left, so let's reduce more hyndais
        end = mid - 1

return start

解决方案的总运行时复杂度为O(N*log(M))。干杯!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52723410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档