Eine Geschichte, die in 4 Monaten nach dem Start von AtCoder mit Python hellblau wurde

Es ist ein Artikel nach dem Titel. 無題.png Ich habe AtCoder im September gestartet und es wurde neulich bei AGC41 hellblau. Ich dachte, ich würde zusammenfassen, was ich bisher in diesem Bereich getan habe, also werde ich es als Artikel schreiben. Ich weiß nicht, ob es für alle hilfreich sein wird.

Über die Person, die schreibt

――Sie haben die Junior High School Prüfung abgelegt und die ehemalige Graduiertenschule der Imperial University (Hauptfach Chemie) abgeschlossen. Daher habe ich den mathematischen Hintergrund, um mich für sie einzuschreiben. Ich hatte viel Spaß am College, deshalb erinnere ich mich nicht an die Mathematik am College.

Sie können das B-Problem von ABC ohne viel Zögern lösen, aber beginnen Sie in einem Zustand, in dem Ihre Kenntnisse über Wettbewerbsprogrammierung und -algorithmen nahezu Null sind. AtCoder begann eher als Hobby.

Was ich getan habe

** Lösen Sie Probleme mit genau dem richtigen Schwierigkeitsgrad mit Atcoder-Probleme. **nur das. ↓ Dies ist der aktuelle ABC-Füllstatus. 無題.png Nun, ich stelle in 4 Monaten 330 Fragen, also denke ich, dass es eine Person ist, die es in kurzer Zeit gepackt hat, aber wenn Sie denken, dass 330 Fragen hellblau sind, ist es nicht angemessen? Eindruck das. Vor kurzem habe ich den Wettbewerb ein wenig ausgefüllt, damit ich weniger Probleme habe, die ich tatsächlich gelernt habe.

無題.png Übrigens ** Ich habe noch kein Mathpy oder Scipy verwendet. ** **. Sie können es tun, ohne es überhaupt zu benutzen. Ich habe vor, es in Zukunft zu verwenden.

――Das Ausfüllen von zu geringen Schwierigkeitsgraden mag gut sein, um die Motivation aufrechtzuerhalten, aber ich denke, es ist nutzlos (nicht bedeutungslos), um sich zu verbessern. Eine Person, die Problem A in 4 Minuten lösen kann, kann nur 2 Minuten verdienen, selbst wenn sie die Geschwindigkeit verdoppelt. Wenn Problem D jedoch 40 Minuten dauert, kann sie 4 Minuten verdienen, indem sie es nur um 10% beschleunigt. Dies ist also ein schwieriges Problem. Ich denke, dass es einfacher ist, sich zu verbessern, wenn Sie daran arbeiten. Selbst wenn Sie 10 Fragen mit 300 Punkten lösen, können Sie aus Erfahrung 400 Punkte nicht lösen. Wenn Sie 400 Punkte lösen können, müssen Sie 10 Fragen auf 400 Punkte stellen.

――Denken Sie über das Problem nach, bis Sie es vollständig verstanden haben. Selbst wenn Sie sich den Kommentar ansehen und denken: "Oh, das stimmt", hören Sie hier nicht auf. Ich werde es tun, bis ich es mit meinen eigenen Händen umsetze. Es war dasselbe wie für die Prüfung zu lernen, aber ** Das Gefährlichste ist, dass ich es lösen kann, indem ich so viele Fragen wie möglich sammle und meine Hand bewege, indem ich aufhöre zu denken. ** Ich werde es mit der Absicht tun, jede Frage zu meinem eigenen Blut zu machen. Es gibt jedoch einige Dinge, die ich immer noch für "Ich bin noch früh" halte, wenn ich mir den Kommentar ansehe, damit ich es nicht übertreibe. --Siehe die Antworten anderer Leute, die in Python eingereicht wurden. Es ist oft zu weit fortgeschritten, um hilfreich zu sein, aber es ist oft möglich, auf etwas zu stoßen, das Sie nicht kannten. »Ich habe ein Ichiou-Ameisenbuch gekauft und ungefähr die Hälfte davon gelesen. Ich versuche es zu lesen, wenn ich ein Gefühl der Stagnation verspüre. Es ist wichtig, ein umfassend geschriebenes Buch zu lesen. Natürlich können Sie Code nicht einfach durch Lesen schreiben.

Vor- und Nachteile von Python

Das ist eine wichtige Voraussetzung, und obendrein werde ich die Vorzüge auflisten, die ich tatsächlich mit Python empfunden habe.

○ Relativ hohe Lesbarkeit

Es ist leicht zu verstehen, was Sie auf einen Blick tun ... Ich fühle. Dies ist eher ein Vorteil, wenn Sie sich den Code eines anderen ansehen, als ein Vorteil, wenn Sie ihn selbst verwenden. Um ehrlich zu sein, ist es mir egal, ob ich es etwas verwirrend oder mit vielen Klammern schreibe. Moderne Hauptsprachen sind möglicherweise nicht so gut oder minderwertig (weil sie sonst eliminiert werden). Andererseits finde ich Python beim Lesen des Codes eines anderen oft vorteilhaft, weil es kurz und ordentlich ist. Nun, das ist auch subjektiv.

○ Viele implementierte Methoden

Es gibt viele Leute, die sich gefragt haben: "Ist das da?" Dichotomisierte Suche, priorisierte Warteschlange oder sequentielle Aufzählung. Und wenn Sie googeln, kommt es im Grunde heraus. Es gibt verschiedene Methoden für kürzeste Routen (obwohl es besser ist, eine zu haben, die Sie selbst implementiert haben, damit Sie verschiedene geringfügige Änderungen vornehmen können).

△ Sie müssen die Methode studieren

Natürlich können Sie nichts verwenden, was Sie nicht wissen. Sie haben keine Chance, es zu wissen, bis Sie auf das Problem stoßen, diese Methode zu verwenden. Alles was Sie tun müssen, ist zu lernen.

△ Erfordert Kenntnisse über den Rechenaufwand für jede Methode

Ich denke, dass es bis zu einem gewissen Grad allen Sprachen gemeinsam ist, aber die Geschwindigkeit ändert sich vollständig in Abhängigkeit von der verwendeten Methode, selbst bei gleichem Implementierungsinhalt. Insbesondere bei der Textoperation ist der Unterschied größer. Ich denke jedoch, dass der große Unterschied die Kehrseite der Fülle an Methoden ist. Es kann gesagt werden, dass es ein großer Vorteil ist, dass Sie keine detaillierten Methoden selbst implementieren müssen.

× Sie müssen Pypy und Python auswählen

Grundsätzlich können Sie pypy verwenden, aber Python ist nur für rekursive Funktionen schneller. Wenn Sie es während des Wettbewerbs eilig haben, können Sie Ihre Wahl und TLE (ein Verlust) vergessen.

?? Die Ausführungsgeschwindigkeit ist nicht hoch

In meinem Leben als Python-Profi hatte ich jedoch noch nie "TLE-Überreste, aber es gibt keinen Platz mehr zum Schaben". [Hier](https://maspypy.com/atcoder-%E6%A9%992400%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97 Es ist auch in% E3% 81% 9F) geschrieben, aber ich denke nicht, dass es ein Problem sein wird, es sei denn, es befindet sich auf einem Niveau, das gelb oder orange wird. Ich denke, Python sollte gestoppt werden, wenn Sie sicher sind, dass Sie in so kurzer Zeit gelb werden können, dass Sie keine Zeit haben, die Sprache zu ändern, aber wie viele Menschen gibt es auf der Welt ... Ich persönlich habe auch ein wenig Zweifel an der Meinung, dass "eine Verbesserung um einen konstanten Faktor nicht wesentlich ist", und solange ich mit dem Code, den ich tatsächlich geschrieben habe, konkurriere, habe ich eine Schreibweise entwickelt, die innerhalb des Zeitlimits liegt, indem ich die Merkmale der Sprache unterdrücke Ist es nicht natürlich, es zu tun? Ich denke. Selbst wenn die Logik korrekt ist, denke ich, dass sie falsch sein sollte, wenn die Ausführungsgeschwindigkeit langsam ist.

Was ich über AtCoder denke

Einfach und macht Spaß

Da ich viele Probleme gelöst habe, indem ich lange Zeit für Prüfungen studiert habe, ist das Belohnungssystem für die Lösung der Probleme abgeschlossen. Das Warten auf den Richter, der Gehirnsaft, wenn die AC-Anzeige erscheint, ist immer noch eine große Motivation, AtCoder fortzusetzen.

Die Codequalität verbessert sich nicht wesentlich

Insbesondere innerhalb der begrenzten Zeit des Wettbewerbs ist es einfach, fast denselben Vorgang immer wieder zu kopieren und einzufügen und die Anzahl der Fälle mehr als erforderlich zu erhöhen. Ich denke nicht, dass die Fähigkeit, sauberen Code zu schreiben, angewendet werden kann, wenn Sie sich dessen nicht bewusst sind.

In der Praxis nicht sehr nützlich

Natürlich kann es je nach Art des Geschäfts nützlich sein, aber in meinem Unternehmen sind die Verbindung mit der DB / Front und dem Framework wichtiger, sodass ich es in der Praxis nicht für sehr nützlich halte. Nun, ich denke das ist der Fall. Ich habe das Gefühl, ich mache es nur als Hobby.

Zukünftige Ziele

Es gibt so viele Dinge, die ich noch nicht studiert habe, deshalb möchte ich meine Möglichkeiten weiter verbessern und so weit wie möglich gehen. Ist es nicht etwas, das bis zu Blau gemacht werden kann? Ich fühle, dass.

das ist alles. Wenn Sie eine Idee haben, werde ich sie hinzufügen.

Recommended Posts

Eine Geschichte, die in 4 Monaten nach dem Start von AtCoder mit Python hellblau wurde
Hellblau mit AtCoder @Python
Nach 9 Monaten Atcoder-Geschichte (Python) wurde es blau.
Eine Geschichte, die verschwunden ist, als ich einen Pfad angegeben habe, der mit tilda (~) in Python Open beginnt
Erstellen wir ein Skript, das sich bei Ideone.com in Python registriert.
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
Eine Geschichte, die nicht funktioniert hat, als ich versucht habe, mich mit dem Python-Anforderungsmodul anzumelden
Die Geschichte des Erstellens eines Bots, der aktive Mitglieder in einem bestimmten Slack-Kanal mit Python anzeigt
[Python] Ein Programm, das Treppen mit # erstellt
Umgang mit "Jahren und Monaten" in Python
[AtCoder] Löse ABC1 ~ 100 Ein Problem mit Python
[DSU] Lesen der AtCoder-Bibliothek mit Green Coder ~ Implementierung in Python ~
Löse AtCoder ABC168 mit Python (A ~ D)
Eine Erinnerung an das, was ich beim Starten von Atcoder mit Python feststeckte
Eine typisierte Welt, die mit Python beginnt
"Erste elastische Suche" beginnend mit einem Python-Client
Bis es mit AtCoder hellblau wird
Wortanzahl, die nur Wörter zählt, die mit einem Großbuchstaben in Python beginnen
Eine verwirrende Geschichte mit zwei Möglichkeiten, XGBoost in Python + zu implementieren
Ich habe PyQCheck, eine Bibliothek, die QuickCheck mit Python ausführen kann, in PyPI registriert.
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Ein Memo, das ich schnell in Python geschrieben habe
[Python3] Eine Geschichte, die bei der Zeitzonenkonvertierung steckt
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
Ein Programm, das doppelte Anweisungen in Python entfernt
Eine Geschichte über den Umgang mit Binärdaten in Python
Arbeiten Sie in einer virtuellen Umgebung mit Python virtualenv.
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Eine Geschichte voller absoluter Werte von numpy.ndarray
Fordern Sie AtCoder (ABC) 164 mit Python heraus! A ~ C Problem
Formeln, die unter Mathematik mit Python ausführen angezeigt werden
[Fenwick_Tree] AtCoder Library liest mit einem grünen Codierer ~ Implementierung in Python ~
Die Geschichte, die zur Installation von Pip passt
Erstellen Sie mit PyInstaller eine exe-Datei, die in einer Windows-Umgebung ohne Python funktioniert
[Python] Lassen Sie nur Elemente im Array, die mit einer bestimmten Zeichenfolge beginnen
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Spielen mit der benutzerlokalen API für künstliche Intelligenz in Python
Erstellen Sie einen einfachen Slackbot mit einer interaktiven Schaltfläche in Python
Versuchen Sie, Python mit pybind11 in ein C ++ - Programm einzubetten
Verwenden Sie Cursur, das in Python automatisch mit sqlite3 geschlossen wird
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
Die Geschichte, eine harte Zeit mit der gemeinsamen Menge HTTP_PROXY = ~ zu haben
Die Geschichte, mit Python eine Hanon-ähnliche Partitur zu machen
Eine Geschichte über das Ausprobieren eines (Golang +) Python-Monorepo mit Bazel
Ich möchte mit einem Roboter in Python arbeiten.
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
Erstellen Sie in Python einen Dekorator, der Argumente dynamisch akzeptiert. Erstellen Sie einen Dekorator
Der süchtig machende Punkt des "Bayes-Denkens in Python"
Ein Server, der POST-Daten mit flask / python wiedergibt
Ein Memo, dass ich den Datenspeicher mit Python berührt habe
Löse den Atcoder ABC176 (A, B, C, E) in Python
Führen Sie eine Python-Datei mit relativem Import in PyCharm aus
Eine Geschichte, die mein Herz nach dem Upgrade von OpenStack gestoppt hat
Erstellen Sie mit Quarry einen gefälschten Minecraft-Server in Python
Eine Geschichte, die Django mit einer Funktion wie before_action ausführen wollte, die in Schienen verwendet wird [Anfänger lernt Python mit einem Nachschlagewerk]
MALSS (Einführung), ein Tool, das maschinelles Lernen in Python unterstützt
Kann mit AtCoder verwendet werden! Eine Sammlung von Techniken zum Zeichnen von Kurzcode in Python!