Управління запасами Minecraft важко. У вас 17 алмазів, але вам потрібно 7, щоб скласти чарівний стіл, кирку і меч. Ви піднімаєте їх і клацніть правою кнопкою миші 7 разів? Або клацніть правою кнопкою миші один раз і правою кнопкою миші двічі та візьміть 7 ліворуч? Це так заплутано!
для тих із вас, хто зараз розгублений, не хвилюйтесь, я поясню все це за секунду
Виклик
Враховуючи розмір стека елементів та бажану суму, визначте найменшу кількість кліків, щоб отримати цю суму. Вам потрібно обробляти до 64 для обох входів, і ви можете припустити, що у вас є нескінченні місця для інвентаризації. Ви не можете використовувати трюк перетягування для розповсюдження.
Визначення
Опис являє собою набір слотів , де ви можете зберігати предмети.
Слот є місце для зберігання в вашому інвентарі , де можна розмістити до одного типу елемента.
Стека є кількість елементів , розміщених в одній і тій же групі. Для цілей цього виклику стек - це просто купа елементів у тому самому місці (тому ігноруйте розмір стека)
Курсор Ваша загострена штуковина. Цей курсор. У ньому можуть бути предмети "на ньому"; інакше кажучи, якщо ви натиснули на слот і забрали предмети, підняті вами предмети знаходяться "на курсорі", поки ви не відкладете їх.
Технічні умови
Можливі чотири ситуації. Або у вас є елемент на курсорі, або немає, або ви клацнули лівою кнопкою миші або клацніть правою кнопкою миші.
Якщо у вас немає елемента на курсорі, і ви клацаєте лівою кнопкою миші на слоті, ви збираєте весь стек.
Якщо у вас немає елемента на курсорі і клацніть правою кнопкою миші на слоті, ви збираєте половину стека, округлюючи вгору.
Якщо у вас є елемент на курсорі і клацніть лівою кнопкою миші на слоті, ви розміщуєте всі елементи у цьому слоті. (Для всіх ваших гравців Minecraft у вас не буде> 64 предметів для цього виклику, і всі вони можуть бути складені 64 рази, і у вас є лише один тип, так що заміна предмета тут не застосовується)
Якщо у вас є елемент на курсорі і клацніть правою кнопкою миші на слоті, ви помістите один елемент у цей слот.
Отже, ви починаєте з усіх заданих елементів (перший або другий; ви можете обрати замовлення) в слоті, і ви хочете закінчити з необхідною кількістю (іншого введення) у курсорі.
Проведемо приклад. Скажімо, ви починаєте з 17 предметів і хочете 7. По-перше, ви клацніть правою кнопкою миші на стеку, це означає, що ви зібрали 9 і в цьому слоті є 8. Потім, якщо ви знову клацніть правою кнопкою миші на стеку, ви кладете один елемент назад у слот, залишаючи вам 8, а слот - 9. Нарешті, ви знову клацніть правою кнопкою миші, і у вас є 7, а в слоті - 10. Отже, ви б повернули 3(кількість кліків).
Якщо вам вдасться перехитрити гольф на мене, скажіть, будь ласка, і я відредагую приклад: P
Випробування
Вони генеруються вручну, тому, будь ласка, скажіть мені, чи є помилки. Я здійснюю управління запасами за допомогою клацання правою кнопкою миші, щоб не мати досвіду оптимального управління запасами: P
Given, Desired -> Output
17, 7 -> 3
64, 8 -> 5
63, 8 -> 5
10, 10 -> 1
10, 0 -> 0 # note this case
25, 17 -> 7
Пояснення
Цей виклик може бути складним для гравців, які не входять у Minecraft, я не маю уявлення. Ось кілька пояснень.
64, 8 -> 5 тому що ви підбираєте 32 за допомогою клацання правою кнопкою миші, кладіть його вниз, піднімайте 16, кладіть його вниз, а потім піднімайте 8.
63, 8 -> 5 з тієї ж причини.
25, 17 -> 7 тому що ви набираєте 13, поміщаєте його вниз, вибираєте 6 із залишку 12, 2 повертаєте назад у стек, що залишився, а потім кладіть 4 у курсорі на 13, а потім вибирайте їх.
Правила
- Застосовуються стандартні лазівки
- Ви можете припустити, що
0 <= desired <= given <= 64 - Ви можете приймати дані в будь-якому порядку та робити введення-виведення в будь-якому розумному форматі
0,[n], може перейти: (1) від 0,[a,b,...]до a,[b,...], b,[a,...], ceil(a/2),[floor(a/2),b,...], або ceil(b/2),[a,floor(b/2),...]; або (2) з x,[a,b,...]( x>0) до x-1,[a+1,b,...], x-1,[a,b+1,...], x-1,[a,b,...,1], 0,[a+x,b,...], 0,[a,b+x,...], 0,[a,b,...,x]. Завдання полягає в тому, щоб знайти мінімально можливі переходи, 0,[g]звідки g задано, t,Lде tє бажана мета і чи Lє список?