Алгоритмы(1657 задач)
Структуры данных(279 задач)
Интерактивные задачи(17 задач)
Другое(54 задач)
Дано количество сообщений на некотором форуме (\(N\) натуральное, не более \(1000\)).
Также таблица, в которой указано какие сообщения на каком уровне находятся.
В первой колонке таблицы написаны номера сообщений (натуральные числа, не превосходят \(10^6\)).
Во второй колонке напротив номера сообщения стоит либо 0, если сообщение является корнем (началом) некоторой темы, либо номер того сообщения, ответом на которое является текущее.
Пример. Следующие исходные данные:
4 1 0 2 0 3 1 4 3соответствуют такой структуре форума:

Вывести структуру форума в виде дерева. На одной строке выведите номер одного сообщения, с отступами нужной величины. Отступы заполнить символами ‘*’ (звездочка). Сообщения каждого следующего уровня должны иметь отступ слева на две звездочки больше, чем сообщения предыдущего, при этом сообщения внутри ветки должны располагаться по возрастанию номеров.
Например, для теста
3
1 0
2 0
3 1
Ответ будет
1
**3
2
Сначала вводится натуральное число \(N\) (не превышает \(1000\)) – общее количество сообщений на форуме.
Затем вводится \(N\) строк таблицы, по \(2\) числа на строке – номер текущего сообщения и номер того сообщения, ответом на которое является текущее (или \(0\)).
Выведите структуру форума в описанном формате.
2 1 0 7 1
1 **7
3 1 0 4 1 9 1
1 **4 **9
Дан граф из \(n\) вершин, раскрасьте его в минимально возможное число цветов так, чтобы никакие две вершины, соединенные ребром, не были одного цвета.
В первой строке содержится число \(t\) - количество тестовых примеров (\(1 \leq t \leq 5\)).
Далее содержится \(t\) тестовых случаев, заданных в следующем формате:
В первой строке записаны числа \(n\) и \(m\) - количество вершин и ребер соответственно (\(1 \leq n \leq 17\), \(0 \leq m \leq \frac{n \cdot (n - 1)}{2}\)).
Затем идет \(m\) строк, в которых содержится по два числа \(v_i\) \(u_i\), что означает, что вершины \(v_i\) и \(u_i\) соеденены ребром (\(1 \leq v_i, u_i \leq n, v_i \neq u_i\)).
Гарантируется, что все ребра в каждом тестовом случае различны.
Для каждого тестового случая в первой строке выведите минимальное число цветов \(k\).
Во второй строке выведите \(n\) чисел \(a_i\) - цвета вершин (\(1 \leq a_i \leq k\)).
3 3 3 1 2 2 3 3 1 5 3 2 1 3 1 4 2 6 7 1 2 1 5 2 5 2 3 2 4 5 6 5 4
3 3 2 1 2 1 2 2 1 1 3 1 3 1 1 2 1
Как гласят старые малоярославские легенды, где-то далеко-далеко, где сборная России когда-то готовилась к международной олимпиаде, в одной из общеобразовательных школ живёт Граф. Ориентированность Графа, как следует из легенд, меняется от дня ко дню вместе с количеством вершин и ребер, что позволяет Графине и её отражению не скучать и играть во множество игр на Графе.
Вот уже многие дни Граф обрёл постоянную ориентированность; однако в последнее время Граф часто стал бывать раздражительным и колючим, и для Графини настали нелёгкие дни. Чтобы хоть как-то облегчить себе жизнь, Графиня решила написать программу, которая по текущему состоянию, то есть набору вершин и рёбер, сообщит Графине, является ли граф колючим. По опыту прошлых дней, Графиня заключила, что Граф является колючим, если и только если через любое его ребро проходит не более чем один простой цикл.
Напомним, что последовательность ребер ( u 1 , u 2 ) , ( u 2 , u 3 ) , ..., ( u k - 1 , u k ) , ( u k , u 1 ) является простым циклом, если вершины u 1 , u 2 , ..., u k попарно различны. Простой цикл проходит через ребро e , если ребро e содержится в последовательности ребер цикла.
Петлёй в графе называется ребро ( u , v ) , т.ч. u = v .
Рёбра ( u 1 , v 1 ) и ( u 2 , v 2 ) называются кратными, если u 1 = u 2 и v 1 = v 2 .
Помогите Графине понять, является ли её Граф, являющийся ориентированным графом без петель и кратных ребер, колючим или нет.
В первой строке записаны целые неотрицательные числа n и m ( 1 ≤ n ≤ 500 000 , 0 ≤ m ≤ 10 6 - количество вершин и рёбер графа-Графа.
Далее в следующих m строках записано по паре целых чисел u , v , 1 ≤ u , v ≤ n , u ≠ v .
Гарантируется, что в Графе не существует петель и кратных ребер.
Выведите слово " YES ", если Граф является колючим, и " NO " иначе.
3 3 1 2 2 3 3 1
YES
3 4 1 2 2 3 3 1 1 3
NO
Компания « Rapid City Dynamics » знаменита её роботами-собаками, роботами-гепардами и даже человекоподобными роботами. Но большие проекты требуют больших денег, так что компания решила создать что-то простое, но популярное (и более востребованное). Так что компания разрабатывает нового робота « Rat-O-Matic », и вы, как работник « Rapid City Dynamics », принимаете участие в этом.
Робот выглядит как механическая крыса, которая может двигаться и генерировать мелодию, наступая на специальные рамки. Плоскость бесконечна во все стороны, и на ней задана декартова система координат.
Есть ровно n рамок. Каждая рамка задана тремя числами: x , y и r . Она задаёт территорию, ограниченую между двух квадратов со сторонами параллельным осям координат и центрами в точке ( x , y ): радиус первого квадрата r , а второго — 2· r . Радиус квадрата — это расстояние между его центром и стороной. Ко всему прочему, каждой рамке соответствует своя нота. Сейчас есть только 3 возможных ноты, обозначим их как « r », « a » и « t ».
Гарантируется, что никакие две рамки не касаются и не пересекаются.
Вы можете взаимодействовать с роботом, вбивая номер рамки на специальной клавиатуре (рамки пронумерованы начиная с 1 ). Изначально, крыса находится снаружи всех рамок. Благодаря патентованной системе навигации, робот выбирает путь до рамки, который пересекает минимальное количество рамок. Когда крыса наступает на рамку в первый раз, соответствующая нота добавляется в мелодию. Робот останавливается после того, как наступит на нужную рамку.
Известно, что людям нравятся похожие мелодии. В вашей базе данных имеются m мелодий. Каждая мелодия задаётся строкой из символов, которая задаёт ноты. Мелодия, сгенерированная крысой, содержится в мелодии из базы данных, если она содержится в ней в качестве подстроки. Популярность сгенерированной мелодии - это число мелодий в базе данных, которые содержат её. Одинаковые мелодии из базы данных должны быть учтены несколько раз.
В попытке создания самого классного расположения рамок, вы совершили q экспериментов. Эксперименты бывают трёх типов:
Твоя задача — провести эти эксперименты, используя только свой компьютер!
В первой строке содержится натуральное число n — количество рамок ( 1 ≤ n ≤ 2·10 5 ).
В следующих
n
строках описаны рамки,
i
-я из них содержит три натуральных числа
x
i
,
y
i
,
r
i
и символ
c
i
, разделённые пробелами (
- 10
8
≤
x
i
,
y
i
≤ 10
8
,
1 ≤
r
i
≤ 10
8
, и
c
i
{«
r
», «
a
», «
t
»} — координаты центра рамки, радиус внутреннего квадрата и её нота, соответственно.
Следующая строка содержит натуральное число m — количество мелодий в базе ( 1 ≤ m ≤ 2·10 5 ).
Следующие m строк содержат непустые строки из букв « r », « a » или « t », которые задают мелодии. Суммарная длина всех строк не превосходит 2·10 5 .
Следующая строка содержит натуральное число q — количество экспериментов ( 1 ≤ q ≤ 2·10 5 ).
Следующие q строк описывают эксперименты, j -я из них содержит символ t j (« - », « + » или « ? ») и натуральное число x j отделённое пробелом. Символ задаёт тип эксперимента (« - » — 1, « + » — 2 и « ? » — 3), а число обозначает номер рамки.
Гарантируется, что есть хотя бы один эксперимент третьего типа.
Для каждого эксперимента третьего типа, выведите одно число — популярность получившейся мелодии.
10 баллов — (1 ≤ n, m, q ≤ 100, суммарная длина строк не превосходит 100, тесты 2-6) .
10 баллов — ( 1 ≤ n ≤ 4 000, 1 ≤ m, q ≤ 100, суммарная длина строк не превосходит 100, тесты 7-9) .
10 баллов — ( 1 ≤ n, q ≤ 100, 1 ≤ m ≤ 200 000 , суммарная длина строк не превосходит 200 000, тесты 10-13) .
10 баллов — ( 1 ≤ n ≤ 4 000, 1 ≤ m ≤ 200 000, 1 ≤ q ≤ 100, суммарная длина строк не превосходит 200 000, тесты 14-16) .
10 баллов — ( 1 ≤ n ≤ 200 000, 1 ≤ m, q ≤ 100, суммарная длина строк не превосходит 100, тесты 17-19) .
15 баллов — ( 1 ≤ n, q ≤ 200 000, 1 ≤ m ≤ 100, суммарная длина строк не превосходит 100, тесты 20-23) .
35 баллов — полные ограничения, тесты 24-57.
3 3 3 4 r 2 4 1 a 14 4 1 t 3 rat rara aaa 6 ? 3 ? 2 - 1 ? 2 + 1 ? 2
1 2 3 2
В Флатландии идет пора реформ. Недавно была проведена реформа дорог, так что теперь по дорогам страны из любого города можно добраться в любой другой, причем только одним способом. Также была проведена реформа волшебников, так что в каждом городе остался ровно один волшебник. Теперь же началась реформа почтовой системы.
Недавно образованное почтовое агентство «Экс-Федя» предлагает уникальную услугу — коллективную посылку. Эта услуга позволяет отправлять посылки жителям всех городов на каком-либо пути по цене обычной посылки. Удивительно, но пользоваться такой услугой стали только волшебники Флатландии, которые стали в большом количестве отправлять друг другу магические кактусы. Агентство столкнулось с непредвиденной проблемой: как известно, все волшебники живут в башнях и мало того, что не строят в них лестницы, так еще время от времени меняют их высоту. Поэтому, чтобы доставить посылку волшебнику, который живет в башне высотой h , курьеру агентства требуется иметь с собой не менее h метров веревки.
Вам поручено руководить отделом логистики — по имеющимся данным о высотах башен и об их изменениях вам нужно определять минимальную длину веревки, которую нужно выдать курьеру, который доставляет посылки между городами i и j .
Первая строка входного файла содержит число n — количество городов в Флатландии ( 1 ≤ n ≤ 50 000 ). Во второй строке находится n положительных чисел, не превосходящих 10 5 — высоты башен в городах. В следующих n - 1 строках содержится по два числа u i и v i — описание i -й дороги, 1 ≤ u i , v i ≤ n , u i ≠ v i . В следующий строке содержится число k — количество запросов ( 1 ≤ k ≤ 100 000 ). В следующих k строках содержатся описания запросов в следующем формате:
Для каждого запроса доставки посылок выведите минимальную длину веревки, которую необходимо выдать курьеру.
20 баллов — ( 1 ≤ n, k ≤ 100) .
30 баллов — каждый город соединен дорогами не более чем с двумя другими.
50 баллов — полные ограничения.
3 1 2 3 1 3 2 3 5 ? 1 2 ! 1 5 ? 2 3 ! 3 2 ? 1 2
3 3 5
1 100 5 ! 1 1 ? 1 1 ! 1 1000 ? 1 1 ! 1 1
1 1000