如何快速提升速度?
查看原帖
如何快速提升速度?
690474
antonsynonym楼主2024/7/24 22:01
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,而且不是一般的慢,(我知道有问题)但是有没有快速提速方法?

2024/7/24 22:01
加载中...