当时没参加silver的比赛,今天就只是想熟悉一下python的语法(以前都用最熟悉的C++写),于是水了一下Bronze level的题目。
A:最后的结果肯定是在[begin, begin+17]的某个区间里,考虑到begin的可能取值很小,枚举即可。
reader = file('skidesign.in', 'r')
writer = file('skidesign.out', 'w')
N = int(reader.readline())
hill = []
for i in range(N):
hill.append(int(reader.readline()))
result = 10**8
begin = min(hill)
end = max(hill)
# enumerate all cases
for i in range(begin, end+1):
cur = 0
for h in hill:
if h<i:
cur += (h-i)**2
elif h>(i+17):
cur += (h-i-17)**2
result = min([result, cur])
writer.write(str(result))
B: 纯正的模拟题目,判断下一步对应的事件就可以了。
reader = file('slowdown.in'