Управління запасами 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
є список?