[PYTHON] AtCoder ABC155 Problem D Pairs Review Note 1

Überblick

Ein Hinweis zu AtCoder ABC155 Problem D Pairs.

Hintergrund

AtCoder ABC155 am 2020/02/16 war zu beschäftigt, um daran teilzunehmen, aber aufgrund der Hingabe [Problem D](https: // Atcoder.jp/contests/abc155/tasks/abc155_d) Ich konnte mir keine Lösung vorstellen. Als ich den Kommentarartikel betrachtete, verstand ich, dass er nach der Dichotomiemethode gezählt werden sollte. Ich habe selbst versucht, in Python zu programmieren, aber ich konnte TLE nicht alleine verlassen.

Aus Vorheriger Vergleich habe ich vermutet, dass ich wahrscheinlich mit C ++ gehen könnte, aber

Ich war neugierig auf solche Dinge, also habe ich nachgeschlagen.

Umfrageergebnisse

Ist es möglich, es mit Python zu übergeben?

Fazit: Kann bestehen (aber ist es etwas schwierig?)

Als ich nach einer Person suchte, die mit Python3 AC nahm, war das Ergebnis so. ABC155D-python-AC-01m.png Während der Wettbewerbszeit kamen nur zwei Personen durch, maspy war gelb und nohtaray war blau, aber gelb (Stand 20. März 2020). Die Ausführungszeit beträgt ca. 1100 ms.

In Anbetracht der Tatsache, dass nur zwei Personen rechtzeitig vorbeikommen können und dass die beiden Personen, die durchgehen, gelb und blau sind, scheint es ein schwieriges Problem zu sein, an meinen Fähigkeiten vorbeizukommen.

Ich habe es auch mit PyPy versucht, das eine signifikante Verbesserung in Vorheriger Vergleich (Submission # 10928876 zeigte. abc155 / submissions / 10928876)) war diesmal nicht sehr effektiv und TLE konnte nicht gelöst werden.

Was ist süß an Ihrem Code, wenn Sie ihn übergeben?

Vergleich der Ausführungsgeschwindigkeit

Zuerst habe ich die Ausführungszeiten verglichen. maspy's Submission # 10152895 nohtarays Submission # 10155744 Ich habe es auf meinen Server heruntergeladen und selbst geschrieben Programm Submission # 11068460 Außerdem wurde die Ausführungszeit verglichen, zu der jedes Programm für vier Testfälle ausgeführt wurde. Die folgenden Ergebnisse (Zeitbefehlsmessung der verstrichenen Zeit. Einheit ist Sekunden). Da die Ausführungsergebnisse selbst übereinstimmen, scheint das Programm selbst ordnungsgemäß zu funktionieren.

Programm test01 test02 test03 test04
Mein Programm[Einreichung#11068460] 0.045 0.039 9.576 9.576
Nohtaray's[Einreichung#10155744] 0.303 0.288 1.140 1.119
Maspys[Einreichung#10152895] 0.275 0.312 1.097 1.045

Die Größe des Testfalls ist wie folgt. Ai wurde durch Zufallszahlen erzeugt.

Programm test01 test02 test03 test04
N 20 20 200000 200000
Anzahl der positiven Zahlen 10 10 100000 10000
Nummer Null 1 1 1 1
Anzahl der negativen Zahlen 9 9 99999 99999
K 150 50 1500000000 500000000

Die Ergebnisse zeigen, dass mein Programm schneller ist, wenn N klein ist, aber wenn N groß ist Die Programme von maspy und nohtaray sind ungefähr zehnmal schneller. .. ..

Codevergleich

Was ist der Unterschied? .. .. Werfen wir einen Blick auf die Programme von maspy und nohtaray, um dies herauszufinden. Es stellt sich heraus, dass die beiden Codes eine Funktion namens [numpy searchsorted] verwenden (https://docs.scipy.org/doc/numpy/reference/generated/numpy.searchsorted.html). Ein Array wird auch für das zweite Argument verwendet. Es wurde erwartet, dass dies wahrscheinlich viel schneller sein würde als meine Handfunktion. Gibt es eine solche Funktion? .. .. .. Der Code ist kurz, auch dank dieser Verwendung.

Schließlich

Anmerkung 1 ist beendet, bis sich herausstellt, dass die Verwendung der sortierten Suche von numpy "miso" ist.

Ich fand heraus, dass ich nicht genug Wissen über Numpy hatte, um mit Python zu konkurrieren. Wenn Sie Lust haben, numpy searchsorted zu schreiben, oder wenn Sie Code schreiben könnten, der mit C ++ nicht einfacher zu TLE ist, werde ich ihn untersuchen und organisieren.

Recommended Posts

AtCoder ABC155 Problem D Pairs Review Note 1
AtCoder ABC 182 Python (A ~ D)
AtCoder ABC151 Problem D Geschwindigkeitsvergleich in C ++ / Python / PyPy
AtCoder ABC156 Problem D Berechnung und Reihenfolge der Bouquet-Mods usw.
AtCoder ABC176
AtCoder ABC177
Atcoder ABC60 D - Einfache Rucksack-Separatlösung
Python-Anfänger Atcoder memo @ Keyence 2020, ABC-Problem
[AtCoder] Löse ABC1 ~ 100 Ein Problem mit Python
Löse AtCoder ABC168 mit Python (A ~ D)
[AtCoder] Lösen Sie ein Problem von ABC101 ~ 169 mit Python
AtCoder ABC 174 Python
Fordern Sie AtCoder (ABC) 164 mit Python heraus! A ~ C Problem
AtCoder ABC 175 Python
Überprüfung des Atcoders ABC158 bis Frage E (Python)
AtCoder Anfängerwettbewerb 152 Rückblick
AtCoder Anfängerwettbewerb 181 Hinweis
AtCoder Grand Contest 041 Bewertung
AtCoder Regular Contest 105 Bewertung
AtCoder Past Question Review (12 / 6,7)
AtCoder Beginner Contest 160 Bewertung
AtCoder Anfängerwettbewerb 178 Bewertung
AtCoder Anfängerwettbewerb 180 Hinweis
AtCoder Anfängerwettbewerb 166 Bewertung
AtCoder Anfängerwettbewerb 167 Bewertung
AtCoder Regular Contest 106 Hinweis
AtCoder Anfängerwettbewerb 182 Hinweis
AtCoder Beginner Contest 164 Bewertung
AtCoder Beginner Contest 169 Bewertung
AtCoder Beginner Contest 181 Bewertung
AtCoder Beginner Contest 171 Bewertung
AtCoder Beginner Contest 180 Bewertung
AtCoder Anfängerwettbewerb 177 Rückblick
AtCoder Regular Contest 105 Hinweis
AtCoder Grand Contest 045 Bewertung
AtCoder Beginner Contest 179 Bewertung
AtCoder Beginner Contest 172 Bewertung
AtCoder Anfängerwettbewerb 183 Hinweis
AtCoder Regular Contest 106 Bewertung
AtCoder Anfängerwettbewerb 176 Bewertung
AtCoder Anfängerwettbewerb 184 Hinweis
AtCoder Grand Contest 046 Bewertung
AtCoder Anfängerwettbewerb 175 Bewertung
AtCoder Anfängerwettbewerb 174 Bewertung
AtCoder Beginner Contest 153 Bewertung
AtCoder Anfängerwettbewerb 156 Bewertung
AtCoder Beginner Contest 161 Bewertung
AtCoder Beginner Contest 170 Bewertung
AtCoder Regular Contest 104 Bewertung
AtCoder Beginner Contest 165 Bewertung
Eine Person, die das D-Problem mit ABC von AtCoder lösen möchte, hat versucht, zu kratzen
AtCoder Beginner Contest 173 Bewertung
AtCoder Anfängerwettbewerb 155 Bewertung
AtCoder Beginner Contest 162 Bewertung
Lösen mit Ruby und Python AtCoder ABC151 D Suche nach Breitenpriorität
Lösen mit Ruby und Python AtCoder ABC133 D Kumulative Summe
Lösen mit Ruby und Python AtCoder ABC138 D Benachbarte Liste