Варп-швидкість II#4096

Варп-швидкість II

16 секунд
64 мегабайти
Середня

У недалекому майбутньому космічні інженери можуть винайти нову технологію для подорожей у космосі, яку назвали варп-двигун. Цей варп-двигун дозволяє космічному кораблю подорожувати швидше за швидкість світла, згинаючи певну відстань у космосі, що дозволяє кораблю переміщатися через цей зігнутий простір за один стрибок. Для подорожі космосом корабель, оснащений варп-двигуном, може виконати кілька стрибків між початковою та кінцевою точками. Кількість енергії, необхідної для стрибка, залежить від поточного стану варп-двигуна, а також певна кількість енергії витрачається на підготовку або перемикання між станами варп-двигуна.

Мета

Припустимо, що ви інженер на бойовому космічному кораблі. Ваше завдання — налаштувати варп-двигун так, щоб він споживав якомога менше енергії під час будь-якої подорожі. Для кожної подорожі вам буде надано послідовність стрибків, для якої ви повинні знайти відповідну послідовність конфігурацій варп-двигуна, що використовує найменшу кількість енергії.

Щоб виконати своє завдання, ви повинні створити комп'ютерну програму, яка знайде найменшу енергію конфігурації варп-двигуна для будь-якої заданої послідовності стрибків, використовуючи дві таблиці енергоспоживання варп-двигуна. Перша таблиця показує енергію для перемикання між будь-якими двома станами. Друга таблиця показує енергоспоживання, пов'язане зі станами варп-двигуна та стрибками.

Вхідні дані

Вхідні дані складаються з частин, розділених порожнім рядком.

Перша частина визначає розміри станів варп-двигуна та типів стрибків.

  • Вона містить лише один рядок з числами, розділеними пробілом. Ці числа є:

    • Розмір станів варп-двигуна (), який належить до діапазону від до .

      • Ідентифікатори станів мають значення від до N - 1.

      • Перший стан (ідентифікатор ) — це неактивний стан. У цьому стані варп-двигун не може виконувати жодних стрибків. (Саме з цього стану починається та завершується будь-яка послідовність станів у відповіді.)

    • Кількість типів стрибків (), що належить до діапазону від до .

      • Ідентифікатори стрибків мають значення від до H - 1.

Друга частина — таблиця, що вказує енергію перемикання між станами варп-двигуна. Її розмір — рядків та стовпців, тобто N^2 значень енергії.

  • Є рядків. Кожен рядок містить енергетичних значень. Усі числа знаходяться в межах від до .

  • Кожне значення енергії індексується за рядком та стовпцем (спочатку ) — це ідентифікатори поточного й наступного стану відповідно.

    • Наприклад, значення з індексами (рядок , стовпець ) — це енергія для переходу зі стану № у стан . (Це перше число у шостому рядку.)

Третя частина — таблиця, що визначає енергоспоживання для виконання стрибків у кожному зі станів варп-двигуна.

Розмір таблиці — рядків на стовпців, тобто N \times H чисел.

  • Є рядків. Кожен рядок містить по енергетичних значень (у межах від до ).

  • Значення індексуються за рядком (ідентифікатор стану) та стовпцем (ідентифікатор стрибка), обидва починаються з .

    • Наприклад, значення з індексами (рядок , стовпець ) — це витрати енергії для варп-двигуна в стані для виконання стрибка . (Це десяте число у другому рядку.)

    • Зверніть увагу, що у першому рядку таблиці цієї частини, який відповідає стану (неактивний стан), усі значення дорівнюють нулю. Це означає, що у цьому стані не можна виконувати жодних стрибків.

Четверта частина — набір послідовностей стрибків; їх кількість від до .

  • Кількість рядків — від до .

  • Кожен рядок у цій частині містить одну послідовність стрибків.

  • Кількість стрибків у послідовності — від до .

  • Кожен стрибок позначається числом від до H - 1 та розділяється пробілом.

Порожній рядок після четвертої частини є закінченням введення.

Вихідні дані

Для кожної послідовності стрибків із четвертої частини введення ви повинні надрукувати у відповідь частини:

  • У першому рядку — загальну мінімальну кількість енергії.

  • У наступному рядку — розв'язок: послідовність станів варп-двигуна, відповідну заданій послідовності стрибків (довжини мають співпадати). Якщо існує декілька оптимальних рішень із однаковими витратами енергії, виведіть ту, у якій номери станів йдуть у найменшому порядку при ліво-правому порівнянні.

Додаткові пояснення

У першому прикладі (рішення для -го рядка введення) мінімальна енергія становить . Послідовність станів: , або [0-\ 3\ 2\ -0]. Відбулося перемикання: 0 \to 3, 3 \to 2, 2 \to 0, на які витрачено 1 + 1 + 2 = 4. І два стрибки ( та ) виконані у станах й відповідно (4 + 1 = 5). Сумарна енергія: 4 + 5 = 9.

У останньому прикладі мінімальна енергія — . Розв'язок — [0-\ 1\ 1\ 2\ 3\ -0], що витрачає всього енергії.

Приклади

Приклад 1

Loading
Loading