Bir sayı uzunluğunda M
, burada 0 < M <= 1,000,000,000
, N
( 1 < N <= 100,000
) tamsayı nokta çifti verdiniz . Her bir çiftte, ilk nokta bir nesnenin o anda bulunduğu yeri ve ikinci nokta bir nesnenin nereye taşınması gerektiğini temsil eder. (Unutmayın second
noktası olabilir küçük daha first
).
Şimdi, noktadan başladığınızı 0
ve 1
nesneyi tutabilen bir arabaya sahip olduğunuzu varsayın . Sayı çizgisi boyunca en küçük mesafeyi katlarken ( yer değiştirme değil ) tüm nesneleri başlangıç konumlarından ilgili son konumlarına taşımak istersiniz . Sonunda noktaya gelmelisin M
.
Şimdi, bu sorunu daha basit bir soruna indirgemeye çalışıyorum. Dürüst olmak gerekirse, kaba bir kuvvet ( muhtemelen açgözlü) bir çözüm bile düşünemiyorum . Ancak, ilk düşüncem, iki ileri harekete geri bir hareket dejenere etmekti, ancak bu her durumda işe yaramıyor gibi görünüyor.
Bu 3
örnek test örneklerini burada çizdim :
İlk test çantasının cevabı 12
. İlk olarak, red
öğeyi noktada alırsınız 0
. Ardından noktaya 6
(distance = 6
) gidin, red
öğeyi geçici olarak bırakın , ardından green
öğeyi alın. Sonra noktaya 5
(distance = 1
) hareket edip green
öğeyi bırakıyorsunuz . Daha sonra noktaya 6
(distance = 1
) geri gidersiniz ve red
bıraktığınız öğeyi alırsınız, 9 noktasına (distance = 3
) gidin, sonra sırayı bitirmek için point 10
(distance = 1
) noktasına gidin.
Kat edilen toplam mesafe 6 + 1 + 1 + 3 + 1 = 12
, mümkün olan minimum mesafedir.
Diğer iki vakanın cevapları var 12
, sanırım. Ancak, bunu çözmek için genel bir kural bulamıyorum.
Kimsenin fikri yok mu?