Темы --> Информатика
    Язык программирования(952 задач)
    Алгоритмы(1657 задач)
    Структуры данных(279 задач)
    Интерактивные задачи(17 задач)
    Другое(54 задач)
---> 544 задач <---
Страница: << 84 85 86 87 88 89 90 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Сеть компьютерных салонов «ХТТП» представлена в городе Н. двумя магазинами. Руководство Н-ского отделения сети решило реорганизовать витрины, на которых представлены ноутбуки. В каждом из двух магазинов на витрине должны быть представлены \(N\) моделей ноутбуков, выставленные в ряд от касс вглубь помещения магазина. Маркетологи каждого из магазинов уже определили порядок, в котором на витрине должны быть расположены эти модели (эти порядки в двух магазинах, конечно же, могут быть разными).

На витрины надо выставлять специальные, выставочные, образцы ноутбуков, с соответствующим программным обеспечением, показывающим рекламу, и т.д. В распоряжении администрации компьютерных салонов есть две версии специализированного ПО: работающие под управлением операционных систем Windows и Linux. Соответственно, каждый из выставочных образцов ноутбуков должен иметь предустановленной ровно одну из этих систем.

Для снижения затрат было принято решение закупить по два идентичных экземпляра каждой модели ноутбуков (т.е. с одинаковыми предустановленными операционными системами), отправить по одному экземпляру в каждый из магазинов сети, и расставить их на витрине в соответствии с порядком, определенным маркетологами того магазина.

Но при этом возникла проблема. По требованиям Федеральной антимонопольной службы, компьютерные салоны не должны предоставлять преимущества ни одной из операционных систем. Начальство сети «ХТТП» знает, как проходит проверка на соответствие этой норме законодательства. Инспектор антимонопольной службы идет по магазину начиная от касс вдоль витрины с ноутбуками, считает отдельно количество встреченных ноутбуков с Windows и Linux, а также модуль разности этих чисел (т.е. на сколько ноутбуков с одной системой он встретил больше, чем ноутбуков с другой системой). В некоторый момент он останавливается и говорит: «Ага!». Это значит: слишком у вас большой дисбаланс между операционными системами, поэтому платите штраф. Размер штрафа пропорционален разнице (взятой по модулю) количества ноутбуков с разными системами, которые увидел инспектор.

Естественно, руководство сети не в состоянии предсказать, в какой из магазинов пойдет инспектор, а также сколько ноутбуков он просмотрит. Тем не менее, они хотят минимизировать штраф, который им будет выписан в худшем случае. Помогите им.

Например, пусть \(N=5\): в магазинах должны быть выставлены пять моделей ноутбуков. Будем нумеровать модели ноутбуков от 1 до 5. Пусть в первом магазине маркетологи определили, что оптимальный порядок ноутбуков следующий (от касс вглубь зала):

2 4 1 3 5,

а во втором магазине —

3 1 2 5 4.

Тогда, если закупить ноутбуки моделей 1, 3 и 4 с операционной системой Windows, а 2 и 5 — с Linux, то порядок операционных систем в магазинах будет следующий (от касс вглубь зала):

L W W W L,

W W L L W.

Тогда, если, например, инспектор придет в первый магазин и просмотрит первые четыре ноутбука, то он скажет: «Ага!», и выпишет штраф за то, что он увидел Windows-ноутбуков на два больше, чем Linux. Аналогичный результат будет, если он придет во второй магазин и просмотрит только первые два ноутбука.

А если закупить ноутбуки 2 и 3 с системой Linux, а 1, 4, 5 — с Windows, то порядок операционных систем будет следующий:

L W W L W,

L W L W W,

и в какой бы магазин не пришел инспектор, и сколько бы ноутбуков он не посмотрел, разница Windows- и Linux-ноутбуков не будет превосходить по модулю 1, и это и будет оптимальным вариантом для руководства сети. (Напомним, что инспектор всегда начинает осмотр магазина от касс и идет вглубь магазина вдоль ряда с ноутбуками).

Входные данные

В первой строке входного файла записано одно число \(N\) (\(1\leq N\leq 10^5\)) — количество моделей ноутбуков, которые должны быть представлены на витрине. Модели ноутбуков нумеруются от 1 до \(N\).

Далее следуют две строки по \(N\) чисел в каждой — порядки моделей ноутбуков на витрине, определенные маркетологами первого и второго магазина, от касс вглубь зала. Гарантируется, что порядки корректные, т.е. что в каждой из этих строк все числа находятся в интервале от 1 до \(N\) и никакое из чисел не встречается в одной строке дважды.

Выходные данные

В выходной файл выведите строку из \(N\) символов, описывающих необходимую конфигурацию ноутбуков. А именно, \(i\)-ый символ должен быть “W” (без кавычек), если \(i\)-ую модель ноутбуков надо закупать с предустановленной системой Windows, и “L” для Linux.

Если есть несколько оптимальных решений, выведите любое.

Примеры
Входные данные
5
2 4 1 3 5
3 1 2 5 4
Выходные данные
WLLWW
Входные данные
5
1 4 2 3 5
5 1 3 4 2
Выходные данные
WLWLL
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Вчера у Васи был счастливый день: он наконец дописал программу всей своей жизни! И, недолго думая, он тут же запустил ее на Самом Главном Тесте.

Программа Васи очень сложная, и потому работает она долго. Поэтому Вася пошел спать, а наутро, сегодня, обнаружил, что программа, вместо того, чтобы посчитать нужный Ответ, вылетела с непонятной ошибкой.

Вася понял, что напрасно он не тестировал программу. Ведь Самый Главный Тест очень сложный — в нем есть \(N\) отдельных подзадач, и каждую из них надо решить. Конечно, надо было бы начать тестирование с меньшего количества подзадач, но ведь Вася — очень умный программист! И он абсолютно уверен, что его программа корректно решила все подзадачи, кроме какой-то одной. Вот только Вася не знает, какой именно.

Вася может изменять Самый Главный Тест, отключая в нем те или иные подзадачи. Он надеется, что, если среди отключенных будет та подзадача, на которой его программа не работает, то получившийся тест его программа спокойно пройдет. Но вот проблема: программа работает долго, а подзадач много, и потому, если отключать задачи по одной, то придется очень долго искать нужную. А Вася очень хочет узнать, где ошибка, уже завтра!

К счастью, у Васи в распоряжении есть много компьютеров. Он может на некоторых из них запустить свою программу на каком-то тесте (т.е. на Самом Главном Тесте с некоторыми отключенными подзадачами), а назавтра посмотреть, какие программы завершились успешно, а какие нет, — и по результатам понять, какая подзадача создавала проблемы. Помогите Васе подобрать тесты для каждого из компьютеров, т.е. объясните ему, какие подзадачи в каком тесте он должен отключить, так, чтобы назавтра, узнав результаты работы программы на этих тестах, он смог бы уверенно определить, с какой подзадачей у него возникают проблемы (естественно, считая, что такая подзадача только одна, ведь Вася — очень умный программист!)

Учтите, что Васе не хочется делать лишнюю работу по запуску программ и определению их результата, поэтому он хочет минимизировать количество запусков (т.е. фактически количество компьютеров, ведь его программа настолько сложная, что на одном компьютере можно запустить только один экземпляр программы).

Входные данные

В первой и единственной строке входного файла находится одно целое число \(N\) — количество подзадач в Самом Главном Тесте (\(1 \le N \le 10^5\)).

Выходные данные

В первой строке выходного файла выведите минимальное необходимое количество компьютеров \(M\). В последующих \(M\) строках выведите информацию о том, на каком тесте надо запускать программу на каком компьютере. А именно, в \(i\)-ую из них выведите последовательность чисел \(k_i\), \(b_{i1}\), \(b_{i2}\), ...., \(b_{ik_i}\), где \(k_i\) — количество подзадач, которые надо отключить в тесте, на котором будет работать программа на \(i\)-ом компьютере, а \(b_{ij}\) (\(1 \le j \le k_i\), \(1 \le b_{ij} \le N\)) — номера подзадач, которые надо отключать. Числа \(b_{ij}\) должны быть различны для каждого фиксированного \(i\).

Подзадачи нумеруются от 1 до \(N\).

В пределах одной строки подзадачи можете выводить в любом порядке. Если есть несколько оптимальных решений, выведите любое.

Примечание

В примере:

  • если ошибка возникала на первой подзадаче, то на всех трех компьютерах программа отработает верно, т.к. первая подзадача во всех тестах отключена;
  • если ошибка возникала на второй подзадаче, то ошибочно сработает только первый компьютер;
  • если ошибка возникала на третьей подзадаче, то ошибочно сработает только второй компьютер;
  • если ошибка возникала на четвертой подзадаче, то ошибочно сработают первый и второй компьютеры;
  • если ошибка возникала на пятой подзадаче, то ошибочно сработает только третий компьютер.
Поскольку во всех пяти вариантах множества ошибочно сработавших компьютеров различны, то Вася наутро, узнав, на каких компьютерах программа сработала корректно, а на каких — нет, сможет однозначно определить ошибочную подзадачу.

Примеры
Входные данные
5
Выходные данные
3
3 1 3 5
3 1 2 5
4 1 2 3 4
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

В игре «Руммикуб» используются фишки, которые бывают четырех различных цветов, и на каждой из которых написано одно натуральное число от 1 до 13. Для каждого числа и для каждого цвета в наборе фишек есть ровно две соответствующие фишки, т.е. всего в наборе \(8\cdot 13 = 104\) фишки.

Число, написанное на фишке, будем называть ее достоинством; цвета будем обозначать латинскими буквами A, B, C и D, и каждую фишку будем обозначать, записывая сначала ее цвет, а потом — ее достоинство. Например, C12 — это фишка цвета C и достоинством 12.

Комбинацией в игре называется набор из как минимум трех фишек, удовлетворяющий любому из следующих условий:

  • Достоинства всех фишек одинаковы, а цвета — попарно различны; или
  • Цвета всех фишек одинаковы, а достоинства являются последовательными натуральными числами.

Например, следующие наборы фишек являются комбинациями:

  • C12, A12, B12;
  • C12, A12, B12, D12;
  • C5, C6, C7;
  • A3, A4, A5, A6, A7.

При этом следующие наборы не являются комбинациями:

  • A3, B3 (слишком мало фишек);
  • A3, B3, C3, D3, B3 (цвета повторяются);
  • A3, A4, A4, A5, A6 (достоинства повторяются);
  • A3, A4, A6, A7, A8 (число 5 пропущено).

Одна из основных задач в руммикубе состоит в том, чтобы данный набор фишек распределить на комбинации так, чтобы каждая фишка входила ровно в одну комбинацию. Напишите программу, которая будет это делать.

Входные данные

В первой строке входного файла находится одно натуральное число \(K\) — количество фишек. Далее следуют \(K\) строк, на каждой из которых находится описание одной фишки — цвет и достоинство.

Гарантируется, что эти фишки являются корректным подмножеством фишек из некоторого комплекта для игры в руммикуб; т.е. гарантируется, что каждый цвет — это латинская заглавная буква от A до D, что каждое достоинство — это натуральное число, не превосходящее 13, и что для для каждой пары (цвет, достоинство) в наборе есть не более двух таких фишек.

Выходные данные

Если данный набор фишек можно разбить на комбинации так, чтобы каждая фишка входила ровно в одну комбинацию, то в первую строку выходного файла выведите одно число \(M\) — количество комбинаций в вашем решении. Далее выведите \(M\) строк, в \(i\)-ой из которых выведите \(i\)-ую комбинацию. А именно, сначала выведите количество фишек в комбинации, а потом сами фишки, разделенные между собой и отделенные от количества фишек пробелами. В пределах каждой комбинации фишки можете выводить в произвольном порядке; комбинации также можете выводить в произвольном порядке.

Если есть несколько решений, выведите любое. Если решений нет, то выведите в выходной файл одно число -1.

Примеры
Входные данные
3
A2
A3
A5
Выходные данные
-1
Входные данные
3
A2
A4
A3
Выходные данные
1
3 A2 A4 A3
Входные данные
7
A12
A13
A13
B13
C13
D13
A11
Выходные данные
2
3 A11 A12 A13
4 A13 B13 C13 D13
ограничение по времени на тест
4.0 second;
ограничение по памяти на тест
256 megabytes

В столице одной небольшой страны очень сложная ситуация. Многокилометровые пробки буквально парализовали движение в городе, и власти на многих улицах ввели одностороннее движение, не анализируя, можно ли будет теперь проехать из любого места в городе в любое другое, не нарушая правила. Транспортная система столицы представляет собой N площадей, соединенных M полосами для движения, в том числе круговыми полосами, проходящими по площади. Каждая полоса предназначена для движения только в одну определенную сторону. При этом на магистралях есть полосы, направленные как в одну, так и в другую сторону. По круговой полосе можно двигаться только внутри площади и только против часовой стрелки.

Власти города на каждой полосе разместили видеокамеру, поэтому если Иннокентий едет по встречной полосе (при ее наличии) или, в случае одностороннего движения, в сторону противоположную предписанной знаками, то после поездки против правил по каждой из полос ему придется заплатить штраф в размере одной тысячи тугриков этой страны.

Иннокентий, который торопится купить кафельную плитку со скидкой, решился доехать до магазина в любом случае, даже если для этого придется нарушать правила. Но он хочет выбрать такой маршрут движения, суммарный штраф на котором минимален.

Иннокентий еще не решил, откуда именно и в какой магазин он собирается ехать, поэтому ему необходимо ответить на несколько вопросов вида «Какой минимальный штраф надо заплатить, чтобы добраться из пункта A в пункт B?». Отвечая на потребности жителей столицы, известная поисковая система Индекс разрабатывает соответствующий сервис.

Так как многие из вас рано или поздно будут проходить собеседование на работу в эту фирму, продемонстрируйте, что вы тоже умеете решать эту задачу.

Входные данные

В первой строке входных данных содержатся два числа N и M — количество площадей и полос движения в городе соответственно (1 ≤ N ≤ 5000, 1 ≤ M ≤ 10 000). Далее содержатся описания полос, по которым движение разрешено. Каждая полоса описывается номерами двух площадей, которые она соединяет. Движение разрешено в направлении от первой из указанных площадей ко второй.

В следующей строке содержится одно число K — количество вопросов у Иннокентия (1 ≤ K ≤ 10 000, N·K ≤ 2·107). В следующих строках описываются вопросы, каждый вопрос описывается номерами двух площадей, между которыми требуется найти самый дешевый путь. Путь необходимо проложить от первой из указанных площадей ко второй.

Выходные данные

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

Примечание

Тесты к этой задаче состоят из четырех групп.

  • Тест –1. Тест из условия, оценивается в ноль баллов.
  • Тесты 2–-10. В тестах этой группы N не превосходит 10, M не превосходит 20. Эта группа оценивается в 30 баллов.
  • Тесты 11-–20. В тестах этой группы N не превосходит 2000, M не превосходит 3000, K равно 1. Эта группа оценивается в 30 баллов.
  • Тесты 21–-47. В тестах этой группы дополнительные ограничения отсутствуют. Эта группа оценивается в 40 баллов. Решение будет тестироваться на тестах этой группы только в случае прохождения всех тестов из второй и третьей групп.

Баллы за каждую группу тестов ставятся только при прохождении всех тестов группы.

Примеры
Входные данные
5 5
2 1
2 4
3 2
4 3
5 4
3
5 1
1 5
2 3
Выходные данные
0
2
0
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Недавно на уроке во время контрольной Мария Ивановна перехватила записку Саше от Оли. Мария Ивановна очень хочет знать, что в записке, но, к сожалению, записка зашифрована. Мария Ивановна знает, что её ученики для шифровки заменяют каждую букву исходного сообщения на какую-то другую. Замена происходит таким образом, что одинаковые буквы всегда заменяются одной и той же буквой, а разные — разными.

Мария Ивановна подозревает, что записка — это ответы к контрольному тесту (ведь её длина случайно оказалась равной длине строки с правильными ответами). Однако она знает, что ответы Оли не обязательно полностью правильны. На каждый вопрос возможен один из K вариантов ответа. Естественно, Мария Ивановна знает правильные ответы.

Мария Ивановна решила расшифровать записку таким способом, чтобы максимизировать количество правильных ответов Оли. Однако, она очень занята, поэтому попросила Вас помочь ей в этом пустяковом деле.

Входные данные

В первой строке задана длина каждой из строк N (1 ≤ N ≤ 2 000 000) и K — количество возможных ответов на каждый вопрос (1 ≤ K ≤ 52). Ответы нумеруются в порядке abcde...xyzABCDE...XYZ. То есть, при K = 6 возможные ответы выглядят как abcdef, а при K = 30 "— abcde...xyzABCD.

Во второй строке задана зашифрованная записка — строка, состоящая из строчных и заглавных латинских букв.

В третьей строке заданы правильные ответы — строка той же длины, что и первая, состоящая из строчных и заглавных латинских букв.

Выходные данные

В первой строке выведите единственное число — максимально возможное количество правильных ответов у Оли.

Во второй строке выведите расшифровку — строчку длины K, где по порядку для каждой буквы из шифра учеников указано, какому ответу она соответствует.

Если несколько расшифровок дают правильный ответ, выведите любую.

Примечание

Тесты к этой задаче состоят из четырех групп.

  • Тесты 1-–3. Тесты из условия, оцениваются в ноль баллов.
  • Тесты 4-–15. В тестах этой группы K = 2. Решение оценивается в 15 баллов.
  • Тесты 16–-40. В тестах этой группы K ≤ 9. Решение оценивается в 15 баллов.
  • Тесты 41-–75. В тестах этой группы K ≤ 26. Решение оценивается в 30 баллов.
  • Тесты 76–-115. Дополнительные ограничения отсутствуют. Решение будет тестироваться на тестах этой группы только в случае прохождения всех предыдущих групп. Группа оценивается в 40 баллов.

Баллы за каждую группу тестов ставятся только при прохождении всех тестов группы. Тестирование на очередной группе начинается только после полного прохождения предыдущей.

Примеры
Входные данные
10 2
aaabbbaaab
bbbbabbbbb
Выходные данные
7
ba
Входные данные
10 2
aaaaaaabbb
bbbbaaabbb
Выходные данные
6
ab
Входные данные
9 4
dacbdacbd
acbdacbda
Выходные данные
9
cdba

Страница: << 84 85 86 87 88 89 90 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест