Na linii liczbowej długości M
, gdzie 0 < M <= 1,000,000,000
podałeś N
( 1 < N <= 100,000
) liczby całkowite par punktów. W każdej parze pierwszy punkt reprezentuje miejsce, w którym aktualnie znajduje się obiekt, a drugi punkt reprezentuje miejsce, w którym należy przenieść obiekt. (Pamiętaj, że second
punkt może być mniejszy niż first
).
Załóżmy, że zaczynasz od punktu 0
i masz wózek, który może pomieścić 1
przedmiot. Chcesz przenieść wszystkie obiekty z ich początkowych pozycji do odpowiednich końcowych pozycji podczas podróży najmniejszą odległości wzdłuż linii liczbowej ( nie przesunięcia). Musisz skończyć na punkcie M
.
Teraz staram się zredukować ten problem do prostszego. Szczerze mówiąc, nie mogę nawet wymyślić rozwiązania brutalnej siły ( być może zachłannego). Jednak moją pierwszą myślą było zdegenerowanie ruchu wstecz do dwóch ruchów do przodu, ale nie wydaje się to działać we wszystkich przypadkach.
Narysowałem tutaj 3
przykładowe przypadki testowe:
Odpowiedź na pierwsze testcase jest 12
. Najpierw podnosisz red
przedmiot w punkcie 0
. Następnie przejdź do punktu 6
(odległość = 6
), red
tymczasowo upuść element, a następnie podnieś green
element. Następnie przejdź do punktu 5
(odległość = 1
) i upuść green
element. Następnie wróć do punktu 6
(odległość = 1
) i podnieś red
upuszczony przedmiot, przejdź do punktu 9 (odległość = 3
), a następnie przejdź do punktu 10
(odległość = 1
), aby zakończyć sekwencję.
Całkowity przebyty dystans wynosił 6 + 1 + 1 + 3 + 1 = 12
minimalną możliwą odległość.
12
Wierzę, że pozostałe dwa przypadki mają odpowiedzi . Nie mogę jednak znaleźć ogólnej zasady, aby ją rozwiązać.
Czy ktoś ma jakieś pomysły?