计算朋友们安全行走所需的最小道路宽度
问题描述
小橙和他的朋友们正在沿着高度为h的栅栏行走并偷偷交谈,他们不想被老师注意到。为了实现这一点,每个朋友的身高都不应超过h。如果某人的身高大于h,他可以弯下腰,这样他就不会被看守员注意到。第i个人的身高等于ai。通常情况下,假设每个人行走的宽度为1,而弯腰的人的宽度为2。朋友们想要在行走时互相交谈,所以他们想要在一排行走。那么,使朋友们能够在一排行走而不被看守员注意到的道路的最小宽度是多少?
输入
输入的第一行包含两个整数n和h(1 ≤ n ≤ 1000,1 ≤ h ≤ 1000)— 朋友的数量和栅栏的高度。
第二行包含n个整数ai(1 ≤ ai ≤ 2h),其中第i个整数等于第i个人的身高。
输出
输出一个整数 — 最小可能的合法道路宽度。
代码示例
你可以使用下面的Python代码来解决这个问题:
n, h = map(int, input().split())
heights = list(map(int, input().split()))
# 计算最小可能的合法道路宽度
def min_road_width(n, h, heights):
width = 0
for height in heights:
if height > h:
width += 2
else:
width += 1
return width
# 输出结果
print(min_road_width(n, h, heights))
运行代码后,你需要按照提示输入朋友的数量n和栅栏的高度h,以及每个朋友的身高。然后,代码将计算出使朋友们能够在一排行走而不被看守员注意到的最小可能的合法道路宽度,并进行输出。
代码解释
上述代码中使用了一个函数min_road_width()来计算最小可能的合法道路宽度。该函数遍历每个朋友的身高,如果身高大于栅栏高度h,则宽度增加2(代表弯腰),否则宽度增加1。最后,返回累计的宽度作为最终结果。
示例
输入:
4 5
6 4 3 7
输出:
8
解释:
- 第一个人身高为6,大于栅栏高度5,需要弯腰,宽度增加2。
- 第二个人身高为4,小于栅栏高度5,宽度增加1。
- 第三个人的身高为3,小于栅栏高度5,宽度增加1。
- 第四个人身高为7,大于栅栏高度5,需要弯腰,宽度增加2。
因此,最小可能的合法道路宽度为 2 + 1 + 1 + 2 = 8。
原文地址: https://www.cveoy.top/t/topic/PgK 著作权归作者所有。请勿转载和采集!