【发布时间】:2017-10-18 09:22:51
【问题描述】:
在 HackerEarth 上的某些测试用例中,以下代码需要超过 5 秒 (5.001)。这段代码如何在不到 5 秒的时间内运行得更加优化?
tc = int(input())
ip = []
for x in range(0, tc):
temp = []
temp.append(int(input()))
temp.append([int(n) for n in input().split()])
temp.append(int(input()))
ip.append(temp)
for it in ip:
while not it[2] <= 0:
for x in range(0, it[0]):
if it[1][x] == '0':
continue
it[2] -= int(it[1][x])
if it[2] <= 0:
it.append(x+1)
break
print(it[3])
仅供参考:
问题陈述
Aniruddha 被赋予一个里程碑 M 以达到距离。他生活在一个不同的星系中,一年有 N 天。在第 i 天,他最多可以走 X 距离。假设他以最佳方式行走,您需要输出他将达到里程碑的最短天数。
输入
第一行包含 T 个测试用例。每个测试用例由三行组成 第一行由单个整数 N 组成——一年中的天数。
下一行包含 N 个以空格分隔的非负数——即阿尼鲁达在第 i 天将行走的距离。保证这些数字中至少有一个大于零。
第三行是阿尼鲁达必须达到的里程碑价值。
输出
对于每个测试用例,您需要输出以下查询的答案。
约束
1<=T<= 10
1<=N<=10^5
0<=X<=10^8
0<=M<=10^16
【问题讨论】:
-
你试过 multiprocessing.pool() 工具吗?您将输入列表拆分为您的机器有多少可用 CPU。这应该会显着加快速度。请在此处查看文档docs.python.org/2/library/multiprocessing.html
标签: python-3.x optimization mathematical-optimization