Ich habe versucht zusammenzufassen, was der Python-starke Mann in der professionellen Nachbarschaft des Wettbewerbs tut

Freut mich, dich kennenzulernen. Ich bin ein Anfänger, der letzte Woche den Wettbewerb Pro gestartet hat. Ich benutze jetzt Python.

Wenn möglich, möchte ich gute Ergebnisse bei Wettkampfprofis erzielen, ohne mich auf C ++ zu verlassen! Also dachte ich darüber nach, wie ich die Punktzahl mit Python erhöhen kann.

Zum Beispiel in C ++

#define rep(i,n) for((i)=0;(i)<(int)(n);(i)++)

Es gibt viele Leute, die so beschleunigen. Kurz gesagt, es fühlt sich an, als würde man häufig verwendete Beschreibungen vereinfachen. Ich wusste von früher, dass es so einen magischen Brauch gab.

Allerdings kenne ich die Python-Version nicht, obwohl ich mit Python einen Wettbewerbsprofi mache.

Also schrieb ich diesen Artikel mit der Absicht, die Bräuche der starken Wettkampfprofis von Python kennenzulernen. Ich hoffe, es wird für ähnliche Leute hilfreich sein.

Was ich zuerst getan habe

Ich habe den Einreichungscode einer starken Person gelesen. Immerhin gab es eine Magie ähnlich der von C ++ Competition Pro, also werde ich versuchen, sie zu entschlüsseln. (Zitiert von einer bestimmten starken Person)

Tatsächlicher Code

Ich werde den tatsächlichen Code der Reihe nach erklären.

sys.setrecursionlimit(10 ** 6)

Legt die rekursive Tiefe der rekursiven Funktion fest. (Standard ist 1000) Ich verstehe die Bedeutung, aber die Notwendigkeit kommt mir nicht in den Sinn.

Wenn ich es nachgeschlagen habe, scheint es, dass es sich verfängt, also möchte ich es vorerst größer einstellen. Wenn ein Fehler aufgrund dessen auftritt, scheint es sicherlich schwierig zu sein, dies zu bemerken.

Als nächstes fand ich so etwas.

int1 = lambda x: int(x) - 1

Eine Funktion, die die eingegebene Zahl minus eins zurückgibt. Ich frage mich, ob dies der Fall ist ... Ich fühle die Besessenheit eines starken Wettbewerbsprofis lol

Ausgabebezogen

p2D = lambda x: print(*x, sep="\n")

Eine Funktion, die die Elemente einer Liste mit einem Zeilenumbruch anzeigt. Sicher, als ich neulich Atcoder gemacht habe, gab es eine gute Szene mit diesem Lol

Eingabebezogen

#Konvertieren Sie die Eingabe in eine Ganzzahl und empfangen Sie sie
def II(): return int(sys.stdin.readline())

def MI(): return map(int, sys.stdin.readline().split())
def MI1(): return map(int1, sys.stdin.readline().split())

#Empfängt ein Array aller Eingaben, die in Ganzzahlen konvertiert wurden
def LI(): return list(map(int, sys.stdin.readline().split()))
#Empfängt ein Array aller Eingaben, die in Ganzzahlen minus 1 konvertiert wurden
def LLI(rows_number): return [LI() for _ in range(rows_number)]

Als Anfänger habe ich nur input () verwendet, also sortiere zuerst die Unterschiede zu readline ().

--readline () liest auch das nachgestellte Zeilenvorschubzeichen --input () löscht das gelesene Zeilenvorschubzeichen (dh den gleichen Wert wie readline (). Rstrip ())

Da jedoch int ('1 \ n') = 1 ist, kann es so beschrieben werden. Die zitierte Person verwendet readline () wie folgt, aber input () scheint ein Ersatz zu sein.

Häufig verwendete Bibliotheken

Als nächstes habe ich versucht, die häufig verwendeten Bibliotheken zu identifizieren.

Sequenzbezogen

Da Python ein langsames Popup und Anhängen von Arrays hat, schreiben Sie, wenn die Antwort aufgrund der Ausführungszeit falsch ist, wie folgt und verwenden Sie das Deck (Warteschlange an beiden Enden).

from collections import deque
l = deque
l.append(1)
l.pop()

Die nächste Geschichte über das Duplizieren eines Arrays

#Wenn das Array eindimensional ist
list2 = list1[:]
#Für 2 Dimensionen oder mehr
import copy
list2 = copy.deepcopy(list1)

Wenn für eine Dimension "list2 = list1" festgelegt ist, wird list1 auch neu geschrieben, wenn list2 selbst aufgrund der Referenzübergabe neu geschrieben wird. Schreiben Sie es also so. Bei 2 oder mehr Dimensionen wird die Deepcopy verwendet, da sie nicht so beschrieben werden kann.

Datenstruktur

Haufen (Prioritätswarteschlangen) werden häufig bei Wettkampfprofis verwendet. (Zum Beispiel beim Finden des Medianwerts) Der Heap hat die folgenden Eigenschaften

Die Spezifikation ist so, dass der Minimalwert zum Scheitelpunkt kommt. Wenn Sie also den Maximalwert zum Scheitelpunkt bringen möchten, multiplizieren Sie ihn mit -1 und speichern Sie ihn im Heap.

Sie können den Heap wie folgt behandeln.

import heapq
heap = []
heapq.heappush(heap, 1)
heapq.heappop(heap)

Wörterbuch

Bei Verwendung eines normalen Wörterbuchs mit Python muss überprüft werden, ob der dem Schlüssel entsprechende Wert vorhanden ist. Das Standard-Diktat erspart Ihnen solche Probleme. (Ich habe das Gefühl, dass es viele Situationen gibt, in denen ich es benutze, auch wenn ich kein Wettkampfprofi bin.)

Verwenden Sie wie folgt

from collections import defaultdict
d = defaultdict(int)
#Um die Standardeinstellung festzulegen, wenn kein Schlüssel vorhanden ist, schreiben Sie wie folgt
d = defaultdict(lambda : 'Initial Value')

Zusammenfassung

Ich denke, es ist ungefähr so, aber ich denke, es fehlen noch viele Dinge, deshalb plane ich, es von Zeit zu Zeit zu aktualisieren. Ich glaube, dass diese Art von Wissen eines Tages in der Praxis nützlich sein wird, und ich werde weiter studieren.

Recommended Posts

Ich habe versucht zusammenzufassen, was der Python-starke Mann in der professionellen Nachbarschaft des Wettbewerbs tut
[Python] Ich habe versucht, den kollektiven Typ (Satz) auf leicht verständliche Weise zusammenzufassen.
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, die neuen mit dem Corona-Virus infizierten Menschen in Ichikawa City, Präfektur Chiba, zusammenzufassen
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
Ich habe versucht, die im Geschäftsleben häufig verwendeten Befehle zusammenzufassen
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
Ich habe versucht, die Behandlung von Python-Ausnahmen zusammenzufassen
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, Permutation in Python zu implementieren
Ich habe versucht, PLSA in Python 2 zu implementieren
Python3-Standardeingabe habe ich versucht zusammenzufassen
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
Ich habe versucht, den Inhalt jedes von Python pip gespeicherten Pakets in einer Zeile zusammenzufassen
[Bei Coder] Was ich getan habe, um den grünen Rang in Python zu erreichen
Ich habe versucht, die Methoden zusammenzufassen, die häufig bei der grundlegenden Algo-Implementierung in Quantx Factory verwendet werden
Ich habe versucht, alle Python-Diagramme zusammenzufassen, die von aktiven Doktoranden in der Forschung verwendet wurden [Basic]
Ich habe versucht, "Birthday Paradox" mit Python zu simulieren
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
LeetCode Ich habe versucht, die einfachen zusammenzufassen
Ich möchte den Fortschritt in Python anzeigen!
Ich möchte visualisieren, wo und wie viele Leute in der Fabrik sind
Ich habe versucht, die Operationen zusammenzufassen, die wahrscheinlich mit numpy-stl verwendet werden
Ich habe versucht, ein scheinbar Windows-Snipper-Tool mit Python zu implementieren
Ich habe versucht, alle Python-Visualisierungstools zusammenzufassen, die von aktiven Doktoranden in der Forschung verwendet wurden [Anwendung]
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ich habe versucht, Drakues Poker in Python zu implementieren
Ich habe versucht, GA (genetischer Algorithmus) in Python zu implementieren
[Python] Ich habe versucht, die Top 10 der Lidschatten grafisch darzustellen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich möchte R-Datensatz mit Python verwenden
Python Open CV hat versucht, das Bild im Text anzuzeigen.
[LPIC 101] Ich habe versucht, die Befehlsoptionen zusammenzufassen, die leicht zu Fehlern führen können
[Serie für vielbeschäftigte Personen] Ich habe versucht, mit einer Syntaxanalyse zusammenzufassen, um Nachrichten in 30 Sekunden aufzurufen
[Für Anfänger von Wettkampfprofis] Ich habe versucht, 40 AOJ "ITP I" -Fragen mit Python zu lösen
[Python] Ich habe versucht, das Array, die Wörterbuchgenerierungsmethode, die Schleifenmethode und die Listeneinschlussnotation zusammenzufassen
Ich habe versucht, eine Funktion zu erstellen, um zu beurteilen, ob die wichtigsten Aktien der Welt Sommerzeit mit Python sind
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
[Erste COTOHA-API] Ich habe versucht, die alte Geschichte zusammenzufassen
Ich habe versucht, API list.csv mit Python aus swagger.yaml zu erstellen
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Was ich getan habe, um die Python2 EOL mit Zuversicht zu begrüßen
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Was scheint eine Vorlage für den Standardeingabe-Teil des Competition Pro in Python3 zu sein