最开始的代码:
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有什么好的做法能让空间和时间都不超出限制吗