from functools import reduce
def iterate_possible(king,l:list):
base=list(range(len(l)))
for i in base:
l_=l.copy()
for j in range(len(base)):
if l_[base[j]]!=l_[j]:l_[base[j]],l_[j]=l_[j],l_[base[j]]
yield king+l_
while any(base):
for i in range(len(base)-1,-1,-1):
if base[i]!=0:
base[i]-=1
l_=l.copy()
for j in range(len(base)):
if l_[base[j]]!=l_[j]:l_[base[j]],l_[j]=l_[j],l_[base[j]]
yield king+l_
break
else:base[i]=i
def calc_reward(king:tuple,l:list):
max_=0
for sample in iterate_possible(king,l):
reward=[]
for i in range(len(l)+1):
if i!=0:
mul=[sample[j][0]for j in range(len(sample))if j<i]
value=int(reduce(lambda x,y:x*y,mul)/sample[i][1])
reward.append(value)
if max_==0:max_=max(reward)
max_=min(max_,max(reward))
return max_
if __name__=='__main__':
def get_input():
s=input().strip()
if ' 'not in s:return int(s)
return tuple(int(i)for i in s.split())
n=get_input()
print(calc_reward([get_input()],[get_input()for _ in range(n)]))
以上代码,除了第一个、最后一个,全都TLE,而且不是一般的慢,(我知道有问题)但是有没有快速提速方法?