第一行输入整数
—— 测试组数。
接下来
行,每行输入
个整数
。
对每组数据输出一个整数,表示最少操作次数。
2 10 100 200 300 10 10 10 10
5 0
样例1:
第一组测试数据,可能的操作是:
初始
将弹药增加,变成
将弹药减少,变成
将钢材增加到上限,变成
将钢材减少,变成
将铝增加到上限,变成
可以发现无法使用次以下的操作来达到开发所需的资源量,所以答案为
。
第二组测试数据,开发所需的资源量就为资源初始值,所以不需要进行任何操作。
import sys
for line in sys.stdin:
data = line.split()
n = int(data[0])
break
dp = [float("inf") for _ in range(301)]
dp[10] = 0
dp[300] = 1
operation = [1, -1, 10, -10, 100, -100]
count = 0
while float("inf") in dp:
for i in range(301):
if dp[i] == count:
for op in operation:
x = i + op
if 0 <= x <= 300 and dp[x] == float("inf"):
dp[x] = count + 1
count += 1
for line in sys.stdin:
data = line.split()
data = [int(x) for x in data]
print(sum(dp[num] for num in data))