[PYTHON] Grundlegende Algorithmen, die bei Wettkampfprofis eingesetzt werden können

Welcher Artikel?

Ich habe versucht, die Algorithmen aufzulisten, die bei Wettkampfprofis verwendet werden können.

* Von Zeit zu Zeit aktualisiert

Primzahlurteil (Sieben von Elatostines)

https://atcoder.jp/contests/abc084/tasks/abc084_d


from itertools import accumulate
import math
m = 10**5

L = [x for x in range(2,m+1)]

#Extrahieren Sie Primzahlen mit einem Eratostenes-Sieb
for y in range(2, int(math.sqrt(m)+1)):
    L = [z for z in L if(z == y or z % y != 0)]

#N+1/Extrahieren Sie, was 2 auch eine Primzahl ist
P = []
for w in L:
    if (w+1)/2 in L:
        P.append(w)

#Erstellt für die kumulative Summe
G = [0] * (m+1)
for i in P:
    G[i+1] = 1

#Kumulative Summe
Q = list(accumulate(G))



n = int(input())
for _ in range(n):
    s, t = map(int, input().split())
    print(Q[t+1]-Q[s])




'''
Die folgenden Primzahlen sind langsam.
Verwenden Sie das Eratostenes-Sieb wie oben

def isPrime(n):

    if n == 1:
        return False
    if n % 2 == 0:
        return False
    for i in range(3, int(math.sqrt(n)+1), 2):
        if n % i == 0:
            return False
    return True

'''

Bitdynamische Planungsmethode (Patrouillenverkäuferproblem)

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=DPL_2_A

v, e = map(int, input().split())

inf = 10**7
edges = [[inf]*v for _ in range(v)]

for i in range(e):
    s, t, d = map(int, input().split())
    edges[s][t] = d

#Dp sind die minimalen Kosten in S, wenn die Reihenfolge unter der Bedingung optimiert wird, dass v die letzte für die Teilmenge S der gesamten Menge ist.
dp = [[inf]*v for _ in range(2**v)]
dp[0][0] = 0

#Set (Binärzahl, die angibt, ob besucht oder nicht)
for x in range(2**v):
    #Zuletzt besuchter Knoten
    for y in range(v):
        #Andere Knoten als die zuletzt besuchten
        for z in range(v):
            #1.Ob Sie bereits 2 besucht haben.Ist es nicht der zuletzt besuchte Knoten 3?.Sind y und z überhaupt verbunden?
            if ((x >> y) & 1) and y != z and edges[z][y] < 10**6:
                dp[x][y] = min(dp[x][y], dp[x^(1<<y)][z]+edges[z][y])

if dp[-1][0] > 10**6:
    print(-1)
else:
    print(dp[-1][0])

Problem der kürzesten Route (Bellmanford-Methode)

Ich habe auf [hier] verwiesen (https://qiita.com/takayg1/items/92fb138683ac72b47d86). Auch die Erklärung zu Bellman Ford war im Artikel hier leicht zu verstehen.


#v:Peak e:Seite
v, e = map(int, input().split())
#Liste zum Speichern von Kanten (weder benachbarte Matrix noch benachbarte Liste)
edges = []

for _ in range(e):
    s, t, w = map(int, input().split())
    edges.append([s, t, w])
    # edges.append([t, s, w])

#Weniger als,Bellmanford
def bellman_ford(start,goal,edges,v):
    #Entfernungsinitialisierung
    distance = [float("inf")] * v
    distance[start] = 0
    
    for i in range(v):
        #Ob die Entfernung aktualisiert wurde
        updated = False
        for s, t, w in edges:
            if distance[t] > distance[s] + w:
                distance[t] = distance[s] + w
                updated = True
        #Der Nachweis, dass die kürzeste Route gefunden wird, wenn die Entfernung nicht mehr aktualisiert wird
        if not updated:
            break
        #Selbst wenn es v-mal aktualisiert wird, endet die Aktualisierung der kürzesten Route nicht → Es liegt eine negative Schließung vor
        if i == v - 1:
            return -1
    return distance[goal]

for i in range(v):
    print(bellman_ford(0, i, edges, v))

Problem mit maximalem Durchfluss (Ford Falkerson)

Der Artikel Hier ist leicht zu verstehen Ich werde es bald implementieren ...

Recommended Posts

Grundlegende Algorithmen, die bei Wettkampfprofis eingesetzt werden können
Kann bei Wettkampfprofis eingesetzt werden! Python-Standardbibliothek
Zusammenfassung der Standardeingabe von Python, die in Competition Pro verwendet werden kann
Funktionen, die in der for-Anweisung verwendet werden können
ANTs Bildregistrierung, die in 5 Minuten verwendet werden kann
Goroutine (parallele Steuerung), die im Feld eingesetzt werden kann
Goroutine, die im Feld verwendet werden kann (errgroup.Group Edition)
Skripte, die bei der Verwendung von Bottle in Python verwendet werden können
Ein Timer (Ticker), der im Feld verwendet werden kann (kann überall verwendet werden)
Einfaches Auffüllen von Daten, die in der Verarbeitung natürlicher Sprache verwendet werden können
Python-Sound Gerät ASIO akustisches Signalverarbeitungsmodul [Basic]
Dateitypen, die mit Go verwendet werden können
Erstellen von Sphinx, das mit Markdown geschrieben werden kann
Verwendung von rekursiven Funktionen, die bei Wettbewerbsprofis verwendet werden
Persönliche Notizen zu Pandas-bezogenen Vorgängen, die in der Praxis verwendet werden können
Einfache Programminstallation und automatische Programmaktualisierung, die in jeder Sprache verwendet werden kann
Linux-Befehl (Basic Edition), der ab heute verwendet werden kann, wenn Sie wissen
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
[Django] Über Benutzer, die für Vorlagen verwendet werden können
Zusammenfassung der statistischen Datenanalysemethoden mit Python, die im Geschäftsleben verwendet werden können
Grundkenntnisse in DNS, die jetzt nicht zu hören sind
Textanalyse, die in 5 Minuten durchgeführt werden kann [Word Cloud]
Bewertungsindex, der für GridSearchCV von sklearn angegeben werden kann
Liste meiner Artikel, die für Wettkampfprofis nützlich sein können (von Zeit zu Zeit aktualisiert)
[Django] Feldnamen, die für das Benutzermodell, die Benutzerregistrierung und die Anmeldemethoden verwendet werden können
[Python3] Code, der verwendet werden kann, wenn Sie die Größe von Bildern Ordner für Ordner ändern möchten
Ich habe es gemacht, weil ich JSON-Daten möchte, die in Demos und Prototypen frei verwendet werden können
[Python] Grundkenntnisse in AtCoder
Erstellen Sie eine Spinbox, die mit Tkinter in Binär angezeigt werden kann
33 Zeichenfolgen, die in Python nicht als Variablennamen verwendet werden sollten
Umgang mit Zeichenketten in der JSON-Kommunikation
Neue Funktionen in Python 3.9 (1) - Der Summensatzoperator kann im Wörterbuchtyp verwendet werden.
Bestätigung, dass rkhunter installiert werden kann
Erstellen Sie eine Spinbox, die mit Tkinter in HEX angezeigt werden kann
Python-Standardmodul, das in der Befehlszeile verwendet werden kann
Ich habe einen Tri-Tree geschrieben, der für die Implementierung von Hochgeschwindigkeitswörterbüchern in D-Sprache und Python verwendet werden kann
Über die Angelegenheit, dass das re.compiled-Objekt für das re.match-Muster verwendet werden kann
Akustisches Signalverarbeitungsmodul, das mit Python-Sounddevice ASIO [Anwendung] verwendet werden kann
Blenden Sie die Warnung aus, dass zsh auf dem Mac standardmäßig verwendet werden kann
Serverloser LINE-Bot, der in 2 Stunden ausgeführt werden kann (Erfassung der Quellkennung)
Maximale Anzahl von Funktionsparametern, die in jeder Sprache definiert werden können
Eine Geschichte, die Heroku, die in 5 Minuten gemacht werden kann, tatsächlich 3 Tage dauerte
[Python3] Code, der verwendet werden kann, wenn Sie ein Bild in einer bestimmten Größe ausschneiden möchten
QPS-Steuerung, die im Feld verwendet werden kann (Ratenlimit) Begrenzt die Ausführung auf n-mal pro Sekunde
[2015.02.22] Youtube-dl wurde aktualisiert und kann in früheren Versionen nicht mehr verwendet werden.
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Wenn "kann beim Erstellen eines PIE-Objekts nicht verwendet werden" in make angezeigt wird
Zusammenfassung der Scikit-Learn-Datenquellen, die beim Schreiben von Analyseartikeln verwendet werden können
So installieren Sie die Python-Bibliothek, die von Pharmaunternehmen verwendet werden kann
Es kann in 1 Minute erreicht werden! Ein Dekorator, der die Funktionsausführung zwischenspeichert, führt zu einem Memcached
Kratzmodul "Gaspacho", das einfacher zu verwenden ist als Beautiful Soup
Liste der Tools, mit denen Sie auf einfache Weise die Emotionsanalyse japanischer Sätze mit Python ausprobieren können (versuchen Sie es mit Google Colab).
++ und-können nicht zum Inkrementieren / Dekrementieren in Python verwendet werden
Bis Sie youtube-dl mit Synology (DS120j) verwenden können
Listen Sie Pakete auf, die mit pip aktualisiert werden können
Das Problem, dass der Befehl ifconfig nicht verwendet werden kann
Übersicht und nützliche Funktionen von Scikit-Learn, die auch für Deep Learning verwendet werden können
Konvertieren Sie Bilder aus dem FlyCapture SDK in ein Formular, das mit openCV verwendet werden kann