Module: Muster in der dynamischen Programmierung - 2


Problem

1 /5


Theory Click to read/hide

Diskleimer: Das nachfolgend beschriebene Verfahren ist nicht universell, kann aber oft die Herausforderung erfüllen oder die richtige Lösung erreichen.

Wenn Sie in der Aufgabe aufgefordert werden, zu zerstören/stop/seal (oder ähnliche) Fülle, es lohnt sich zu versuchen, es durch dynamische Sublet-Programmierung zu erreichen.

Wir haben dp[l][r] - die beste Antwort für einen Unterabschnitt mit Indizes von l bis r. Die Neuberechnung der Dynamik hängt stark von der Aufgabe ab, aber es gibt folgende allgemeine Ideen:

(1) Um sich die Extreme l und r anzusehen. Wenn sie zusammenfallen oder weiterkompliziert sind, ist es wahrscheinlich, dass die dp[l][r] über dp[l+1][r-1] aktualisiert werden kann. Andernfalls durch dp[l][r-1] oder dp[l+1[r].

(2) Es ist oft möglich, dass der Schnitt [l;r] nicht durch ein einziges Design dargestellt werden kann. Alle möglichen Abschnitte dieses Unterabschnitts sollten dann berücksichtigt werden, d.h. das Element k von l bis r-1 zu entfernen und dp[l][r] durch dp[l][k] und dp[k+1][r] zu zählen. Diese Abschnitte wurden auch in kleineren Schnitten neu berechnet und in der Tat werden die Abschaltmöglichkeiten [l;r] berücksichtigt, nicht nur für zwei Teile, sondern für jede Zahl.

Problem

Sie haben ein Stück kalibriertes Papier von n-crazed Quadraten, nummeriert 1 bis n nach rechts. (i) Quadrate ursprünglich farbig cI

Sagen wir, Quadrate i und j sind in einer Komponente, wenn cI= cJ und cI= ck. für alle k befriedigend i Kanal k Kanal j. Mit anderen Worten, alle Quadrate auf dem I bis j Schnitt müssen von der gleichen Farbe sein.
Beispielsweise weist ein Streifen [3,3.3] eine Telekommunikationskomponente auf und [5,2.4.4] drei.

Die Olive spielt folgendes:
Zu Beginn des Spiels wählen Sie einen zufälligen Start-up-Platz.
Dann, jede Bewegung, Sie ändern die Farbe der Verbindungskomponenten, die den Startplatz enthalten, zu jeder anderen Farbe.

Erfahren Sie die minimale Anzahl von Bewegungen, die Sie benötigen, um den gesamten Streifen in einer Farbe zu malen.

Eingabe:
Die erste Zeile enthält eine ganze Zahl n (1 ≤ n 5.000), die Anzahl der Quadrate.

Die zweite Zeile enthält ganze Zahlen c1,c2n (1 ≤ c)I 2.500 - originale quadratische Farben.

Ausgangsdaten:
Nehmen Sie eine Nummer aus, die Mindestanzahl der Schritte zu machen.

Beispiele:
EingangsdatenAusgangsdaten
ANHANG
2 2 2 1
2
8)
4 5 2 2 1 3 5
ANHANG
1
ANHANG
0)

Beschreibung:
Eine der besten Wege im ersten Beispiel: [5, 2, 1] - [5, 2, 2] - [5, 2, 2] - [5, 5, 5]