[求助]Python解题 从MLE到TLE
  • 板块P5082 成绩
  • 楼主Konjac0629
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/4/4 09:38
  • 上次更新2023/10/23 19:29:36
查看原帖
[求助]Python解题 从MLE到TLE
553640
Konjac0629楼主2023/4/4 09:38

最开始的代码:

n,a,b = int(input()),list(map(int,input().split(" "))),list(map(int,input().split(" ")))

ans=sum(a)/sum(b)
ans=ans-1
ans=pow(ans,-1)
ans=ans+3

print("%.6f"%ans)

然后20分 四个MLE

后来发现是读入并split()转列表的时候空间爆了,不断尝试优化,改成这样子

import sys

def main():
    # 读取第一行
    n = int(sys.stdin.readline())
    # 读取第二行
    sum1 = 0
    num_str = ""
    while True:
        c = sys.stdin.read(1)
        if c == ' ' or c == '\n':
            sum1 += int(num_str)
            num_str = ""
            if c == '\n':
                break
        else:
            num_str += c
    # 读取第三行
    sum2 = 0
    num_str = ""
    while True:
        c = sys.stdin.read(1)
        if c == ' ' or c == '\n':
            sum2 += int(num_str)
            num_str = ""
            if c == '\n':
                break
        else:
            num_str += c
    ans = (sum1/sum2)-1
    ans = pow(ans, -1)+3
    print("%.6f" % ans)

if __name__ == '__main__':
    import gc
    gc.disable()
    main()

然后就全TLE了。。。

大佬们Python有什么好的做法能让空间和时间都不超出限制吗

2023/4/4 09:38
加载中...