在第五人格职业联赛的每一场对局中,需要进行 Ban-Pick 流程。Ban 即角色禁用,Pick 即角色选用。 如试题 Winner 所述,游戏分为 求生者( Survivor Survivor) 与 监管者( Hunter Hunter) 两个阵营。求生者阵营 共有 � n 名角色,监管者阵营 共有 � m 名角色。 在某局比赛中,监管者 可以 ban(禁用) 掉 求生者阵营 5 5 名角色,求生者 可以 ban(禁用) 掉 监管者阵营 2 2 名角色。 每个角色,无论其属于求生者阵营还是监管者阵营,均可以使用 熟练度 来量化该阵营选手选择该角色的优先程度。选手一定会优先选择 熟练度 更高的角色进行游戏。 基于这样的考量,监管者选手 在进行 Ban 流程时,往往会选择 ban(禁用) 掉 求生者阵营熟练度最高 的若干名 求生者角色。同样,求生者选手 在进行 Ban 流程时,往往会选择 ban(禁用) 掉 监管者阵营熟练度最高 的若干名 监管者角色。 在 Ban 流程完成后,需要执行 Pick 流程。 如试题 Winner 所述,求生者选手 需要从 求生者阵营 中选择 4 4 名不同的角色,监管者选手 需要从 监管者阵营 中选择 1 1 名角色。 现在告诉你所有角色的名字、阵营与选手对其熟练度,请你给出双方阵营 Pick 的角色名字。
时间: 2024-02-25 18:55:34 浏览: 254
根据题目描述,我们需要先进行 Ban 流程,然后进行 Pick 流程。Ban 流程中,监管者会 ban 掉求生者熟练度最高的 5 个角色,求生者会 ban 掉监管者熟练度最高的 2 个角色。Pick 流程中,求生者需要选择 4 个不同的角色,监管者需要选择 1 个角色。
因此,我们可以按照以下步骤进行求解:
1. 对于每个角色,记录其所属阵营、熟练度以及是否被 ban。
2. 对求生者阵营的角色按照熟练度从高到低排序,对监管者阵营的角色按照熟练度从高到低排序。
3. 监管者 ban 掉求生者阵营熟练度最高的 5 个角色,求生者 ban 掉监管者阵营熟练度最高的 2 个角色。
4. 求生者从未被 ban 的角色中选择 4 个不同的角色,监管者从未被 ban 的角色中选择 1 个角色。
具体实现细节可以参考下面的代码:
```python
# 定义角色类
class Role:
def __init__(self, name, camp, proficiency):
self.name = name
self.camp = camp
self.proficiency = proficiency
self.ban = False
# 读入数据
n, m = map(int, input().split()) # n 个求生者角色,m 个监管者角色
survivors = [Role(input(), "survivor", int(input())) for i in range(n)]
hunters = [Role(input(), "hunter", int(input())) for i in range(m)]
# 对角色按照熟练度从高到低排序
survivors.sort(key=lambda x: x.proficiency, reverse=True)
hunters.sort(key=lambda x: x.proficiency, reverse=True)
# 监管者 ban 掉求生者阵营熟练度最高的 5 个角色,求生者 ban 掉监管者阵营熟练度最高的 2 个角色
for i in range(5):
survivors[i].ban = True
for i in range(2):
hunters[i].ban = True
# 求生者从未被 ban 的角色中选择 4 个不同的角色
survivor_picks = [role.name for role in survivors if not role.ban][:4]
# 监管者从未被 ban 的角色中选择 1 个角色
hunter_picks = [role.name for role in hunters if not role.ban][0]
# 输出结果
print("Survivors' picks:", ", ".join(survivor_picks))
print("Hunter's pick:", hunter_picks)
```
注意,这里的实现方式只是一种可能的方式,具体实现可以根据实际情况进行调整。
阅读全文