Ja. codeforces http://codeforces.com/contest/373/problem/C
Ursprünglicher Tweet https://twitter.com/cocodrips/statuses/412848727175331840 Kern, der veröffentlicht wurde https://gist.github.com/cocodrips/8001370
Den vollständigen Text des Originalcodes finden Sie in der obigen Veröffentlichung.
ursprünglich
if __name__ == "__main__":
num = map(int, raw_input().split())
num=num[0]
data = []
for _ in range(num):
next=map(int, raw_input().split())
data.append(next[0])
solve(data)
mein Vorschlag
if __name__ == "__main__":
num = int(raw_input())
data = []
for x in range(num):
data.append(int(raw_input()))
solve(data)
Kopieren Sie für die Testdaten den Beispielfall und bereiten Sie 1 Zeile + 200.000 Datenzeilen vor. Die erste Zeile gibt die Anzahl der anzugebenden Zeilen an, und die folgenden 200.000 Zeilen sind die in Texto kopierten Daten.
Ichios CPU und Speicher Processor 2.5 GHz Intel Core i5 Memory 16 GB 1333 MHz DDR3
Zeitmessung
time
import=time
start=time.clock()
##Anderer Ausführungsteil
end=time.clock()
t=end-start
Wie du kommentiert hast
if __name__ == "__main__":
num = int(raw_input())
data = (int(raw_input()) for _ in xrange(num))
solve(data)
Führen Sie 3 Mal aus und listen Sie den Mittelwert in der folgenden Tabelle auf
Teil 1: Originaldaten Teil 2: num = int (raw_input ()) Nur die Art und Weise, wie die erste Zeile empfangen wird, wird geändert Teil 3: Ändern Sie nur, wie data.append (int (raw_input ())) empfangen wird, während Sie mit for drehen Teil 4: Beide haben sich geändert Teil 5: Wie Sie kommentiert haben
Muster | Verarbeitungszeit |
---|---|
Teil 1 | 0.990795 Sekunden |
Teil 2 | 0.995793 Sekunden |
Teil 3 | 0.661866 Sekunden |
Teil 4 | 0.677707 Sekunden |
Teil 5 | 0.647318 Sekunden |
Der Zeitunterschied war diesmal signifikant in Bezug auf den Empfang ab der zweiten Zeile ...
Der Testfall in meiner ersten Zeile war 200.000, und ich erhielt nur 6 Ziffern pro Zeile von 500.000, was die maximale TLE unter den Voraussetzungen für die Frage war, und ich konnte den Zeitunterschied nicht spüren.
Auf den ersten Blick scheint es keinen großen Unterschied zwischen Teil 3, 4 und Teil 5 zu geben, und es scheint gut zu sagen, dass es einen Geschwindigkeitsunterschied gibt, je nachdem, ob er weniger als 0,65 Sekunden beträgt oder nicht.
Als Bonus
data.append(input())
Als ich den Cast mit int entfernt habe, hat es einige Male länger gedauert, daher scheint es besser, ihn nicht zu entfernen.
Recommended Posts