作为当代建筑的粉丝,农民约翰(John)建造了一个完美圆形的新谷仓。在里面,谷仓由n环组成房间,从1…n的顺时针方向编号。房间的有n个(1<= n <= 1000)。每一间房间都有三扇门,两扇分别通往临近的房间,一扇通往谷仓的外面。
Farmer John 想要有准确的 ri 头牛在房间 r 中(1<= ri <= 100), 他打开了某一个房间通往谷仓外面的门,并让母牛门按照顺时针方向进入到谷仓中直到她们遇到了一个舒适的地方。Farmer John 想要他的奶牛们使用最短的路程走到房间内,请确认最小的距离这些奶牛们需要走。距离就是单头奶牛穿过内部的门的数量。
输入格式(file cbarn.in):第一行包含 n,剩下的n行每一行包含一个 ri
输出格式(file cbarn.out):
请写出最小的距离
输入样例:5 4 7 8 6 4输出样例:
48在这个例子中,最好的解就是让牛从需要7头牛的门进去
USACO
这里是原文地址,中文为我手翻,如果有不准确的地方勿喷
=====Analysis=====
这是一道比较简单的模拟题,其中需要模拟的部分题目也写的非常清楚了
这里可以直接枚举+模拟
枚举从所有门进的可能,然后枚举的单个内再进行模拟,最后取步数最小的门即可
=====Code=====
#201602B2
#Circular Barn
#https://usaco.org/index.php?page=viewproblem2&cpid=616&lang=en
def solve():
steps = 999999999999999
for i in range(N,2*N):
cur_steps = 0
for j in range(i-1,i-N,-1):
cur_steps += sum(rooms[j:i])
steps = min(steps,cur_steps)
return fout.write(f"{steps}\n")
fin = open('cbarn.in','r')
fout = open('cbarn.out','w')
lines = fin.read().splitlines()
N = int(lines[0])
rooms = [int(lines[i]) for i in range(1,N+1)]*2
solve()
fout.close()
标签:cur,Python,lines,201602B2,range,steps,fout,cbarn,Barn
From: https://blog.csdn.net/QWQFAE233/article/details/136711712