题解:P12268 [蓝桥杯 2024 国 Python B] 球衣号码
题解:坤之队的球衣号码
题目描述
在篮球之都,有一支由
输入格式
- 第一行:两个整数
n 和m ,表示球员数量和比赛场数。 - 第二行:
m 个整数,表示每场比赛的队长编号。
输出格式
- 一行
n 个整数,表示每个球员在所有比赛中的最大球衣号码。
解题思路
- 球衣号码规律:对于队长编号
p ,球员i 的球衣号码为|i - p| 。 - 最大号码:对于每个球员
i ,队长为j 时,其最大球衣号码是所有比赛中|i - p_j| 的最大值。 - 优化:可以通过观察发现,最大球衣号码只与所有队长编号的最小值
mmin 和最大值mmax 有关。因此,对于每个i ,其最大球衣号码为max(|i-mmin|,|i-mmax|) 。代码实现
import sys
def main():
# 读取 n 和 m
n, m = map(int, sys.stdin.readline().split())
# 初始化最大值和最小值
mmax = -float('inf')
mmin = float('inf')
# 读取 m 个队长编号,更新最大值和最小值
t_list = list(map(int, sys.stdin.readline().split()))
for t in t_list:
mmax = max(mmax, t) # 取最大值
mmin = min(mmin, t) # 取最小值
# 根据前面推理得出的公式输出答案
for i in range(1, n + 1):
print(max(abs(i - mmin), abs(i - mmax)), end=" ")
if __name__ == "__main__":
main()