原始问题:
游游调整数组元素至指定范围的最小操作次数
在[1,2]范围内,所以输出-1。
解析:首先需要判断数组中的最大值和最小值与目标范围的关系,如果最大值大于r或者最小值小于l,那么无法使得数组中每个元素大小都在[l,r]范围内,输出-1。否则,计算数组中的最大值和最小值与目标范围的差值,然后用差值除以2向上取整,得到最少的操作次数。
代码如下:
def min_operations(t, cases):
for i in range(t):
n, l, r = cases[i]
ai = list(map(int, input().split()))
max_val = max(ai)
min_val = min(ai)
if max_val > r or min_val < l:
print(-1)
else:
diff = (max_val - l + r - min_val) // 2
print(diff)
# 输入示例
t = 1
cases = [(5, 1, 5)]
min_operations(t, cases)
Prev:优化112个标准羊栏生产计划以最大化年化出栏量