Lösen mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (053 --055 Dynamische Planungsmethode: Andere)

1. Zweck

Lösen Sie 100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten in Python. Das Ziel ist es, hellblau zu werden, wenn Sie alles gelöst haben.

Dieser Artikel ist "053 - 055 Dynamische Planung: Andere".

2. Zusammenfassung

Wie Sie unter "Andere" sehen können, unterscheiden sich diese drei Fragen in Bezug auf die Ausrichtung (Präferenz?) Etwas von den vorherigen "dp". Und sind "dp", die nicht wie "dp" sind. Ich fühlte, dass.

3. Hauptgeschichte

053 --055 Dynamische Planung: Andere

053. DPL_1_D - Unterspalte mit der längsten Zunahme

image.png

Antworten


import bisect

n = int(input())
A = [int(input()) for _ in range(n)]
dp = [A[0]]

for i in range(1, n):
    if A[i] > dp[-1]:
        dp.append(A[i])
    else:
        ind = bisect.bisect_left(dp, A[i])
        dp[ind] = A[i]

print(len(dp))

Löse mit Dichotomie und DP.

dpIn aufsteigender ReihenfolgeaWir werden die Elemente von hinzufügen. Speziell,

  1. Für alle `A``` Elemente A [i] `` `
  2. Fügen Sie etwas Größeres als das letzte Element von `` dp zu` `dp hinzu
  3. Wenn es nicht groß ist, gibt es mehr als `A [i]` in `dp```, also ersetzen Sie es durch` A [i] `` `
  4. Die Antwort ist die Länge des abgeschlossenen `` `dp``` ist.

054. AtCoder-Anfängerwettbewerb 006 D - Trump Insert Sort

image.png

Antworten


import bisect

N = int(input())
C = [int(input()) for _ in range(N)]

dp = [C[0]] #Ursprünglicher Wert

for i in range(1, N):
    if C[i] > dp[-1]:
        dp.append(C[i])
    else:
        ind = bisect.bisect_left(dp, C[i])
        dp[ind] = C[i]

print(N - len(dp))


  1. Es ist fast dasselbe wie DPL_1_D - Unterspalte mit der längsten Zunahme. Der Unterschied ist der letzte `print (N --len (dp))`. Die Häufigkeit, mit der Sie eine Spielkarte einlegen müssen, entspricht der Anzahl der Spielkarten abzüglich der Länge der am längsten wachsenden Unterspalte.

  1. AtCoder Beginner Contest 134 E - Sequence Decomposing image.png

Antworten


import bisect
from collections import deque

N = int(input())
A = [int(input()) for _ in range(N)]

dp = deque()
dp.append(A[0])

for i in range(1, N):
    ind = bisect.bisect_left(dp, A[i])

    if ind == 0:
        dp.appendleft(A[i])
    else:
        dp[ind-1] = A[i]

print(len(dp))


Lassen Sie uns die Denkweise von den beiden oben genannten Problemen ändern. In den obigen zwei Problemen waren die Elemente über dem Maximalwert von `` `dp````` append```, Dieses Mal werden wir die Elemente unterhalb des Mindestwerts anhängen.


Recommended Posts

Lösen mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (053 --055 Dynamische Planungsmethode: Andere)
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (028 - 033 Suche nach Breitenpriorität)
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (034-038 Dynamische Planungsmethode: Knapsack DP basic)
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (039 - 045 Dynamische Planungsmethode: Knapsack DP-Variante)
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (024 --027 Suche nach Tiefenprioritäten)
Lösen Sie mit Python [100 ausgewählte Fragen aus der Vergangenheit, die Anfänger und Fortgeschrittene lösen sollten] (015 --017 Vollständige Suche: Vollständige Suche weiterleiten)
Löse mit Python [100 ausgewählte Fragen aus der Vergangenheit, die Anfänger und Fortgeschrittene lösen sollten] (010 --014 Vollständige Suche: Bit vollständige Suche)
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 5/22]
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 7/22]
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 4/22]
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 3/22].
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 1/22]
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 6/22]
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (056 - 059 Problem mit der kürzesten Route: Dyxtra-Methode)
Lösen Sie mit Python [100 ausgewählte Fragen aus der Vergangenheit, die Anfänger und Fortgeschrittene lösen sollten] (005 --- 009 Alle Suche: Alle Aufzählungen, um die Anzahl der Straßen durch Entwickeln zu reduzieren)
1. Algorithmus Praktischer Test Lösen Sie frühere Fragen mit Python
Programmieren mit Python und Tkinter
Lösen mit Ruby und Python AtCoder ABC178 D Dynamische Planungsmethode
Lösen mit Ruby und Python AtCoder ABC011 C Dynamische Planungsmethode
Lösen mit Ruby und Python AtCoder ABC153 E Dynamische Planungsmethode
2. Algorithmus Praktischer Test Löse vergangene Fragen mit Python (unvollendet)
Tipps (Eingabe / Ausgabe), die Sie beim Programmieren von Wettbewerben mit Python2 kennen sollten
Tipps (Kontrollstruktur), die Sie beim Programmieren von Wettbewerben mit Python2 kennen sollten
Tipps (Datenstruktur), die Sie beim Programmieren von Wettbewerben mit Python2 kennen sollten
Kausales Denken und kausale Suche von Python (für Anfänger)
[Für Anfänger von Wettkampfprofis] Ich habe versucht, 40 AOJ "ITP I" -Fragen mit Python zu lösen
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Python, das ich Anfängern in der Programmierung empfehlen möchte
Lösen Sie simultane normale Differentialgleichungen mit Python und SymPy.
Tipps zum Programmieren von Wettbewerben mit Python2
Löse AtCoder 167 mit Python
3. 3. KI-Programmierung mit Python
Python-Programmierung mit Atom
Löse POJ 2386 mit Python
Programmieren mit Python Flask
Ich wollte den Panasonic Programming Contest 2020 mit Python lösen
Vergleichen Sie HTTP GET / POST mit cURL (Befehl) und Python (Programmierung).
Löse das Spiralbuch (Algorithmus und Datenstruktur) mit Python!
Wiederholung der Memorisierung und dynamische Planungsmethode, bekannt aus der Python Fibonacci-Sequenz
Lösen Sie AtCoder-Probleme Bootcamp für Anfänger (Medium 100) mit Python
Zusammenfassung der Module, die die Installation von WebDriver mit Python automatisieren und unterstützen