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 secondnoktası olabilir küçük daha first).
Şimdi, noktadan başladığınızı 0ve 1nesneyi 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 redbı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?