加速双倍求和的最佳方法

时间:2014-04-17 18:15:43

标签: python optimization sum

我的代码有效,但我需要它在1秒内运行。 我该怎么做?

For this summation

import math
import time

t=time.time()
line = input().split(' ')
Alen = int(line[0])
Blen = int(line[1])

A = input().split(' ')
B = input().split(' ')

total=0
for i, Ai in enumerate(A):
    for j, Bj in enumerate(B):
       total+= abs((int(Ai)-int(Bj)))*(int(i)-int(j))

print(total)#, time.time()-t)

1 个答案:

答案 0 :(得分:2)

这应该快一点;没有一些样本数据,没办法说出多少。

import time

def get_ints(s):
    return [int(i) for i in s.split()]

t = time.time()

Alen, Blen = get_ints(input())
A = get_ints(input())
B = get_ints(input())

total = sum(abs(Ai - Bj) * (i - j) for i,Ai in enumerate(A) for j,Bj in enumerate(B))

print(total)#, time.time()-t)