您的位置:首页 > 房产 > 家装 > Python-算法编程100例-二分法(入门级)-业务负载分配

Python-算法编程100例-二分法(入门级)-业务负载分配

2024/7/6 19:03:31 来源:https://blog.csdn.net/wangchao2679/article/details/140164400  浏览:    关键词:Python-算法编程100例-二分法(入门级)-业务负载分配

题目: 

现有一个服务器集群(服务器数量为 serverNum),和一批不同类型的任务(用数组 tasks 表示,下标表示任务类型,值为任务数量)。
现需要把这批任务都分配到集群的服务器上,分配规则如下:应业务安全要求,不同类型的任务不能分配到同一台服务器上一种类型的多个任务可以分配在多台服务器上
「负载」定义为某台服务器所分配的任务个数,无任务的服务器负载为0。
「最高负载」定义为所有服务器中负载的最大值。
请你制定分配方案,使得分配后「最高负载」的值最小,并返回该最小值。

解答:

from typing import List
import math
class Solution:def get_need_server(self, tasks, load):need_server_num = 0for task in tasks:need_server_num += math.ceil(task / load)return need_server_numdef get_min_load(self, server_num: int, tasks: List[int]) -> int:left = 1right = max(tasks)while left <= right:mid = (left + right) // 2need_server_num = self.get_need_server(tasks, mid)# 负载太小,服务器不够用if need_server_num > server_num:left = mid + 1# 负载太大,服务器没有用完elif need_server_num < server_num:right = mid - 1else:right = mid - 1return left

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com