`
Завдання ІІІ туру NetOI-2018.
Розв’язки приймаються до 0 годин 26 січня 2019 р.
Задача Typo. На комп’ютерах серії “Буг” кожна літера задається матрицею у N рядківта M стовпчиків, кожен піксель якої або чорний, або білий. Введемо поняття кернінгу між сусідніми символами. Кернінгом назвемо суму відстаней (тобто кількість білих пікселів) між найлівішим чорним пікселем правої літери і найправішим чорним пікселем лівої літери по кожному рядку. До прикладу, нехай N = M = 3 і ми розглядаємо два сусідні символи: У даному випадку у першому рядку відстань рівна 1, у другому 2, утретьому 1, тож сумарно маємо 4, а отже і кернинг буде 4. Вам дані
нариси N символів (причому кожен символ містить хоча б один чорний піксель у кожному рядку). Потрібно визначити, чи можна з них скласти послідовність (можливо, з повторами) так, щоб сума кернінгів між усіма
парами сусідніх літер складала рівно X. В порожнього рядку сумою кернінгів буде 0. Оскільки це дуже важлива задача, ми попросимо вивести відповідь для багатьох запитів.
Технічні умови. Програма Typo читає з пристрою стандартного введення 3 цілих числа N, M, K (1 ≤ N, M, K ≤ 100) - розміри матриці, що задають кожен символ та кількість символів. Далі слідують K*N рядків по M символів, причому кожні N послідовних рядків задають нарис певного символа. “#” (символ решітки) при цьому означає чорний піксель, ‘.’ (символ крапки) - білий. Далі слідує число Q (1<=Q<=100) -кількість запитів, після чого слідують Q цілих невід’ємних чисел (кожне не перевищує 109) - власне, запити. Програма має вивести рівно Q символів “Y” у випадку, якщо навідповідний запит відповідь “так” (тобто можна скласти послідовність з символів відповідним кернінгом) або “N” у іншому випадку.
Приклад
Введення
3 3 2
.##
##.
.##
.#.
.#.
.#.
3
4 5 2
Виведення
YYN
Задача Travel2018. У великому місті всі мешканці їздять лише автобусами. Жителі вимушені витрачати час, економлячи гроші - одноразові квитки дорогі. Тому пасажири намагаються планувати поїздки так, аби пересідати з маршруту на інший як можна меншу кількість разів. Добре, що в місті на кожній зупинці висить розклад руху автобусів по всім маршрутам. Напишіть програму, яка допоможе доїхати з однієї вибраної зупинки на іншу, використовуючи мінімальну кількість одноразових квитків.
Технічні умови. Програма Travel2018 читає з стандартного пристрою введення у першому рядку чотири цілих числа, розділені пропусками: кількість автобусів N, кількість зупинок у місті M, число A – зупинка, де пасажир починає поїздку і число В - зупинка, куди хоче доїхати пасажир. Автобуси нумеруються від 1 до N, зупинки - від 1 до M ( 1 ≤ N ≤ 1000; 1 ≤ M ≤ 1000; 1 ≤ A, B ≤ M; A ≠ B.) Наступні М рядків містять списки зупинок автобусів. (i +1) -й рядок описує i-ту зупинку: перше ціле число Li (1 ≤ Li ≤ N) - кількість автобусів, що зупиняються на ній, а далі Li цілих чисел, розділених пропусками - номери маршрутів цих автобусів. Гарантується, що розв’язок існує. Програма виводить на стандартний пристрій виведення одне ціле число K - мінімальна кількість одиночних квитків, щоб доїхати від А до B
Приклад
Введення
4 9 1 8
2 1 2
2 2 3
1 1
3 1 2 3
1 3
2 3 4
1 3
1 4
1 2
Виведення
3
Коментар. Сідаємо в автобус №2,їдемо до зупинки 2, потім на автобусі №3. їдемо до зупинки 6 і на автобусі № 4 доїжджаємо зупинки 8. Це не єдиний спосіб досягти мети, використовуючи лише 3 одноразові квитки.
Задача Cezar. Над рядком з N літер латинського алфавіту трішки познущалися. Спершу пронумерували усі суфікси від 1 до N, починаючи зліва направо. Наприклад, у рядку “abc” суфікс “abc” - перший, суфікс “bc” - другий, суфікс “c” - третій. Далі відсортували суфікси у алфавітному (лексикографічному) порядку. Після цього усі суфікси замінили на їх номери. Отриману послідовність назвемо характеристичною для цього рядка.
На жаль, початковий рядок було втрачено, але на щастя, залишилась характеристична послідовність і інший рядок з N літер латиниці. Крім того, у вашому розпорядженні наявний шифратор. Цей автомат приймає на вхід два рядки - один з N літер (джерело), інший рівно з 26 літер (ключ). Шифратор заміняє усі входження літери “a” у джерелі на першу літеру з ключа, усі входження літери “b” на другу літеру ключа (загалом усі входження i-тої літери латиниці у джерелі на i-тий символ у ключі). Необхідно віднайти такий ключ з 26 літер, який би у парі з даним в умові джерелом з N літер давав рядок з даною характеристичною послідовністю. При цьому шуканий ключ має бути перестановкою літер латинського алфавіту, тобто кожна літера повинна зустрічатися там рівно один раз.
Технчічні умови. Програма Cezar читає з пристрою стандартного введення натуральне число N (що не перевищує 100000) - кількість символів у вхідному рядку. З другого рядку програма має читати перестановку з N натуральних чисел - характеристичну послідовність. У третьому рядку рівно N маленьких символів латиниці - джерело.
Програма виводить на пристрій стандартного виведення рівно 26 символів латиниці у разі, якщо існує деякий ключ, який міг би у парі з джерелом при перетворенні у шифраторі дав би рядок, характеристична послідовність якої вказана у другому рядку вхідних даних. Якщо таких ключів декілька, виведіть лексикографічно мінімальний. Якщо жодного можливого ключа немає, виведіть IMPOSSIBLE.
Введення |
Виведення |
3 1 2 3 aaa |
IMPOSSIBLE |
Введення |
Виведення |
3 1 2 3 cba |
cbadefghijklmnopqrstuvwxyz |
Коментар до другого прикладу: при заміні літера “a” перейде в “c”, літера “b” перейде сама у себе, а літера “c” перейде в літеру “a”. Відповідно, за лексикографічним порядком, “abc” < “bc” < “c”, тобто суфікси відсортовані як 1 2 3.
Задача Lib2019 У пошуках задач для третього туру олімпіади NetOI-2018 два члени журі вирішили відвідати приміщення, де зберігаються паперові архіви старих олімпіад «догуглівської» епохи. Архів розміщений у просторій залі у формі багатокутника без самоперетинів (але не обов’язково опуклий). Колеги вирішили, що безпечніше буде не втрачати одне одного з поля зору. На якій максимальній відстані можуть знаходитися колеги, щоб не втрачати одне одного з поля зору і не виходити за межі архіву? Члени журі бачать одне одного, якщо між ними можна провести відрізок, жодна з точок якого не лежала б ззовні архіву.
Технічні умови. Програма Lib2019 читає з клавіатури число N (3 ≤ N ≤ 300) кількість вершин багатокутника. Далі слідують N пар цілих чисел (кожне з яких не перевищує 1000 за абсолютною величиною) - координати вершин багатокутника в порядку обходу за або проти годинникової стрілки. Багатокутник не має ні самоперетинів, ні самодотиків. Програма має вивести єдине число - відповідь на задачу з точністю не менш як 5 знаків після коми.
Приклад
Введення |
Виведення |
4 2 2 2 3 3 3 3 2 |
1.414213 |
Задача Words2018. Квадратна таблиця розмірів NxN заповнюється великими літерами латинського алфавіту Першу літеру алфавіту вставляють у будь-яку вільну клітинку, потім другу і т.д. Після останньої літери алфавіту (якщо є ще порожні клітинки), літери знову починаються від початку алфавіту. Данo слово. Напишіть програму, яка буде знаходити маршрут у таблиці від верхнього лівого поля до правого нижнього, де кожна літера з даного слова з'явиться на шляху хоча б один раз. Порядок літер на маршруті не має значення. Довжина маршруту (кількість відвіданих клітинок, включно х початковою та кінцевою) повинна бути мінімальною. Якщо клітинка кілька разів входить до маршруту, то вона підраховується стільки ж разів. Можливо переходити з одної клітинки в іншу, якщо вони мають спільну сторону, але не можна переходити «знизу вгору», тобто не можна повернутися на попередній рядок. Гарантується, що розв’язок завжди існує.
Технічні умови. Програма Words2018 читає з пристрою стандартного введення ціле число N у першому рядку - це розмір таблиці, у другому - слово, яке ми
Приклад |
|
Введення 6 VAIVA IKHJQL ETEFGH WXUVCY MIABFG AOBCSD ZNJPRD |
Виведення 13
|
шукаємо. N>5, K>0, N*K≤ 81. тут K - кількість букв у слові. Далі програма читає таблицю літер у наступних N рядках. Кожний рядок містить N літер без пропусків. Передбачається, що рядки нумеруються (починаючи з одиниці) згори вниз, стовпці (починаючи з одиниці) - зліва направо. Програма виводить на пристрій стандартного виведення єдине число – мінімальну довжину шляху. Сам шлях виводити не потрібно.
Завдання підготували Г.Непомнящий, Ю.Пасіхов, М.Стречень
© LIKT 1998-2024