pannenkoek2012 має на меті виконати Super Mario 64 якомога менше натискань на кнопку A, завдяки чому Маріо стрибає. Кожна преса складається з трьох частин:
- Натискання кнопки
- Тримайте його будь-який проміжок часу
- Звільняючи його
Дивіться у цьому відео (1:15 - 3:23), щоб отримати чудове пояснення, яке містить наведене вище зображення. (Однак цей виклик не буде використовувати термінологію напівпресування A і створюватиме перешкоди, які потребують звільнення А.)
Завдання:
Враховуючи послідовність перешкод, які потребують натискання (P), утримування (H) або відпускання (R) кнопки A, видайте найменшу кількість натискань, необхідних для їх подолання у заданому порядку. Спочатку кнопка A не утримується.
Формально сказано: задавши рядок S символів PHR
, розгляньте рядки форми, (PH*R)*
які містять S як підпорядкування, і виведіть P
в такому рядку найменшу можливу кількість s. Або, альтернативно, знайдіть найменшу кількість шматочків форми, на P?H*R?
яку S можна розбити.
Приклад
Давайте подивимось на вхід RHRPHHHR
. Кнопка A починається не утримується, тому для подолання початкової перешкоди R
потрібно натиснути і відпустити кнопку (натисніть №1). Далі нам потрібно утримувати кнопку H
, яка знову вимагає її спочатку натиснути (натисніть №2). Потім він може бути відпущений згодом для задоволення R
після нього. Нарешті, решту PHHHR
можна задовольнити одним натисканням (натисніть №3) з подальшим утримуванням HHH
та відпуском R
. Отже, кількість вихідних даних - 3.
Ще один спосіб побачити це - ми можемо розділити вхідний рядок на 3 частини форми, PHH..HHR
де букви можуть бути пропущені.
R
HR
PHHHR
Формат введення
Введенням буде список або рядок елементів, що представляють натискання, утримування та випуск як ваш вибір:
P, H, R
p, h, r
1, 2, 3
0, 1, 2
збігаються у наведеному порядку. Вхід не буде порожнім.
Тестові приклади:
P 1
H 1
R 1
HP 2
RHP 3
HHR 1
PHRH 2
RHRPHHHR 3
HHHHHH 1
PPRRHHPP 6
HPPRHRPRHPPRHPPHRP 12
PRHRHPHHPRRRHPPRHHPPRRRHRHPRPHPRPRHHRPPPRHPRP 28
Табло: