这道题目要求从每个战队中选择一名成员,组成一个队伍,使得所选成员的战力极差(即最大战力与最小战力之差)最小。为了实现这一点,我们首先读取每个战队成员的战力值,并将每个成员的战力与所属的战队编号一起存储。接着,我们将所有战队成员的战力值按升序排序,这样排序后的战力值便于我们快速选择最小的战力差。然后,我们使用滑动窗口技术来查找最小的战力极差。滑动窗口的左右边界分别为 left
和 right
,通过移动这些边界,我们可以确保每个战队的成员都被包含在窗口内。为了记录当前窗口覆盖的队伍,我们使用一个 defaultdict
来记录每个战队的成员数,同时维护一个 covered_teams
变量,表示当前窗口覆盖的战队数。当窗口包含了所有战队时,我们计算当前窗口的最大战力和最小战力之差,并更新最小的战力极差。每次收缩窗口时,都会更新当前窗口的战力极差,并与之前的最小极差进行比较,最终输出最小的战力极差。通过这种方式,我们能在较短的时间内找到最平衡的队伍配置。
在《无主星渊》的竞技宇宙中,来自各个星系的顶尖战队齐聚一堂,准备迎战传说中的最终BOSS。每个星系派出了最精锐的战队,共n支战队,每支战队有m名成员,每位成员的战力值分别为p1,p2,..Pm
为了组成最强的终极挑战队,你需要从每支战队中各选1名成员(共n人),但团队配合至关重要。经过无数次模拟战斗,联盟科学家发现:战力越均衡的团队,越能激发协同共鸣。因此,选拔规则如下:在所有可能的组队方案中,选择战力极差(最大值·最小值)最小的方案,确保团队以最平衡的状态迎战BOSS。