Diskleimer: Das nachfolgend beschriebene Verfahren ist nicht universell, kann aber oft die Herausforderung erfüllen oder die richtige Lösung erreichen.
Wenn auf einer bestimmten Achse (in der Regel die Zeitachse oder die Indizes eines Bereichs) ein Zwischensatz vorhanden ist und einige von ihnen in der besten Weise ausgewählt werden müssen, dass sich die gewählten Schnittpunkte nicht schneiden, dann lohnt es sich, dynamische Programmierung anzuwenden.
Beispiel der Lösung:
Zunächst werden wir die vorhandenen Räume an der rechten Grenze sortieren. Lassen Sie uns die folgende Dynamik setzen: dp[i] - Antwort für die ersten i Intervalle.
Wir werden wie folgt lesen: Zuerst werden wir die Situation betrachten, dass der Raum nicht genutzt wird, dann nur dp[i] = dp[i-1]. Wir weisen darauf hin, dass dadurch sichergestellt wird, dass dp[i] Werte mit dem Wachstum i nicht überschritten werden. Und logisch, indem wir einen neuen Slot hinzufügen, können wir die globale Antwort nicht verschlechtern: entweder ignorieren wir einfach den neuen Slot oder wir können eine bessere Option mit ihm zu gestalten. Wenn wir nun den i-Abstand nutzen wollen, können wir diese Räume nutzen, deren rechte Grenzen kleiner sind als die linke Linie des aktuellen Raumes, weil wir eine Reihe von unerklärlichen Linien wählen müssen. Zu diesem Zweck haben wir ursprünglich die rechten Linienräume sortiert, so dass die notwendige Position nun effektiv erkannt werden kann. Dies kann analytisch, wenn möglich, aber im allgemeinen, ein Binpoisspalt gefunden werden, dessen rechte Grenze geringer ist als die linke Stromlinie und möglichst weit. Maximieren Sie die richtige Linie, wir wollen gierig sein, da die Höhe von i die Antwort nur erhöhen kann. Dementsprechend finden wir die notwendige p und zählen die dp[i] durch dp[p] und i-through.