Module: treffen Sie sich in der Mitte


Problem

1 /5


Theory Click to read/hide

Meet-in-the-middle
Meet-in-the-middle - Die Art und Weise, Lösungen zu optimieren, die das ursprüngliche Ziel durch zweieinhalb zu brechen, um jedes, unabhängig und dann zu erreichen, die Basislinie, durch die Kombination der Lösungen.

Das ergibt Sinn. meet-in-the-middlewenn zwei Bedingungen erfüllt sind.
(1) Die Zeit, die benötigt wird, um die halbe Herausforderung zu erfüllen, ist asymptotisch weniger als die Zeit, die erforderlich ist, um die Aufgabe zu erfüllen.
(2) Um das Ziel der Hälfte zu erreichen, können Lösungen zum ursprünglichen Ziel erhalten werden, mit asymptotisch schneller als einfach das Ziel zu erreichen.
Beispiel
Haben vier ganze Zahlen. ABC und D♪ Es ist erforderlich, aus jeder Masse eine Zahl auszuwählen, so daß die Summe dieser Zahlen Null ist. Sie können eine naive Lösung verwenden, das ist, nur um alle Optionen zu nehmen. Es wird für dich funktionieren. О(n4)

Aber wir können es benutzen. meet-in-the-middle
Lassen Sie uns bemerken, dass a + b + c + d = 0 äquivalent zu etwas (a + b) = -(c + d)
Wir teilen die Aufgabe um zwei Hälfte, d.h. in der ersten Hälfte verwenden wir nur die Massen. A und BUnd in der zweiten Hälfte, C und D
Wir nehmen alle Optionen. (a + b) In der ersten Hälfte behalten wir alle Werte in der Hash-Tabelle.unordered_mapHashMap oder so.). Es funktioniert für Sie. O(n2)
Jetzt werden wir alle möglichen Optionen wieder einholen. (c + d) In der zweiten Hälfte. Wenn wir eine bestimmte Option betrachten, werden wir überprüfen, ob es einen Wert in der hosh tablin mit dem aktuellen Betrag gegenüber dem Zeichen verbunden ist (dann haben wir zwei umgekehrte Zahlen gefunden, die null geben). Dieser Teil funktioniert auch für O(n2)
Wir haben hier keine eigene Phase.AntwortenUnd in einem taten wir es, wie wir uns für jede Hälfte entschieden haben. Die Situation wird in den meisten Aufgaben ähnlich sein.
Wir haben endlich eine Entscheidung. O(n2)Verwendung meet-in-the-middle

Es ist zu beachten, dass die meisten der Zeit meet-in-the-middle Bewerben Sie sich auf die Optimierung von exponentiellen Lösungen, die die Arbeitszeit erheblich beeinflussen.

Problem

Dunkle Masse Abestehend aus n Summe positive Zahlen und Anzahl m♪ Wählen Sie eine Reihenfolge der Positionen B1B2Bk (1 Kanal = B)1 B.2 PER... PER Bk. PER = n) so, dass?möglichst hoch war (d.h. die Balance der Trennung der Summe der Komponenten nach Anzahl mwar wie möglich). Die gewählte Sequenz kann leer sein.
Betrachten Sie den maximal möglichen Wert ?

Eingangsdaten
In der ersten Zeile gibt es zwei ganze Zahlen n und m (1 Kanal = n EPO = 35, 1 PER = m E = 10ANHANG) In der zweiten Zeile n ganze Zahlen A1A2An 1 Zug = AI · 10ANHANG)

Ausgangsdaten
Eine Nummer - Maximalwert ?

Beispiele
NeinEingangsdatenAusgangsdaten
1ANHANG
Artikel 2
3
23 20
199 41 299
19
Warenbezeichnung
Im ersten Beispiel kann man ausgewählt werden B = {1, 2}(A1 + A2) mod m = (5 + 2) % 4 = 3
Im zweiten Beispiel kann man wählen B = {3}