Алгоритмы(1657 задач)
Структуры данных(279 задач)
Интерактивные задачи(17 задач)
Другое(54 задач)
Дано прямоугольное поле, каждая клетка которого покрашена в какой-то цвет. За один ход необходимо перекрасить все клетки одного цвета в другой цвет. Стоимость перекраски одной клетки зависит от номера хода и задается функцией: \(F(i) = ((A \cdot F(i-1)+B) \bmod~C) + 1\), \(F_1\) – известная стоимость первого хода.
Необходимо за минимальное количество ходов перекрасить все поле в один цвет так, чтобы общая стоимость перекраски была бы максимальной.
В первой строке натуральные задаются числа \(F_1\), \(A\), \(B\) и \(C\) (\(1 \leq F_1, A, B, C \leq 10000\)) – параметры функции \(F\). Во второй строке задаются два натуральных числа \(M\) и \(N\) (\(1 \leq N, M \leq 50\)) – размеры поля. В последующих \(M\) строках записано по \(N\) натуральных чисел, не превосходящих \(2^{31}\) – цвета клеток.
В первую строку выведите минимальное число ходов. Во вторую строку выведите в каком порядке будут перекрашиваться цвета, встречающиеся в таблице.
60 баллов ставится за решения, работающие на тестах, в которых номер цвета не превосходит \(10^5\).
Много в мире разных часовых поясов! Именно поэтому соревнования по программированию часто бывают в неудобное для некоторых людей время. Как-то раз Гриша и Егор решили поучавствовать в соревновании, которое заканчивалось очень поздно. Именно поэтому ребята решили переночевать в гостинице, чтобы не возвращаться домой поздно. Однако все не так просто. Родители Егора и Гриши очень волнуются за своих детей, поэтому они решили установить по всему городу камеры, чтобы видеть, где находятся ребята.
В городе, где живут программисты 1 ≤ n ≤ 500 000 перекрестков, соединенных n - 1 дорогой так, что между любыми двумя перекрестками существует путь по дорогам.
Родители собираются установить на перекрестках города камеры, радиус действия которых равен длине дороги. Родители будут спокойны, если смогут видеть ребят на любой дороге и на любом про перекрестке. Иными словами, для каждого перекрестка должен существовать перекресток, находящийся на расстоянии не более одной дороги, такой что на нем установлена камера и для любой дороги должна быть установлена камера хотя бы на одном конце этой дороги. Установка камер — затратное дело, поэтому для каждого перекрестка с номером i известна стоимость 1 ≤ cost i ≤ 10 9 установки камеры на нем.
Помогите родителям установить камеры надлежащим образом за минимальную стоимость.
В первой строке входного файла содержится количество перекрестков n ( 1 ≤ n ≤ 500 000 ).
В последующих n - 1 строках содержатся v i u i — перекрестки соединенные очередной дорогой.
Последняя строчка входного файла содержит n чисел сost 1 , сost 2 , ..., сost n ( 1 ≤ сost i ≤ 10 9 ) — стоимости установки камер на перекрестках.
В первой строке выведете минимальную стоимость установки ans и количество перекрестков k , в которых надо установить камеры.
Во второй строке выведите k чисел — перекрестки, в которых надо установить камеры.
Если ответов несколько, разрешается вывести любой из них.
6 1 2 2 3 1 4 4 5 4 6 228 1488 2 2 8 1
232 3 1 3 4
Телекоммуникационная сеть крупной IT-компании содержит n серверов, пронумерованных от 1 до \(n\). Некоторые пары серверов соединены двусторонними каналами связи, всего в сети m каналов. Гарантируется, что сеть серверов устроена таким образом, что по каналам связи можно передавать данные с любого сервера на любой другой сервер, возможно с использованием одного или нескольких промежуточных серверов.
Множество серверов \(A\) называется отказоустойчивым, если при недоступности любого канала связи выполнено следующее условие. Для любого не входящего в это множество сервера \(X\) существует способ передать данные по остальным каналам на сервер \(X\) хотя бы от одного сервера из множества \(A\).
На рис. 1 показан пример сети и отказоустойчивого множества из серверов с номерами 1 и 4. Данные на сервер 2 можно передать следующим образом. При недоступности канала между серверами 1 и 2 — с сервера 4, при недоступности канала между серверами 2 и 3 — с сервера 1. На серверы 3 и 5 при недоступности любого канала связи можно по другим каналам передать данные с сервера 4.
Требуется написать программу, которая по заданному описанию сети определяет следующие числа: \(k\) — минимальное количество серверов в отказоустойчивом множестве серверов, \(c\) — остаток от деления количества способов выбора отказоустойчивого множества из \(k\) серверов на число \(10^9 + 7\)
Первая строка входного файла содержит целые числа \(n\) и \(m\) — количество серверов и количество каналов связи соответственно (\(2 \le n \le 200000\), \(1 \le m \le 200000\)). Следующие \(m\) строк содержат по два целых числа и описывают каналы связи между серверами. Каждый канал связи задается двумя целыми числами: номерами серверов, которые он соединяет.
Гарантируется, что любые два сервера соединены напрямую не более чем одним каналом связи, никакой канал не соединяет сервер сам с собой, и для любой пары серверов существует способ передачи данных с одного из них на другой, возможно с использованием одного или нескольких промежуточных серверов.
Выведите два целых числа, разделенных пробелом: \(k\) — минимальное число серверов в отказоустойчивом множестве серверов, \(c\) — количество способов выбора отказоустойчивого множества из \(k\) серверов, взятое по модулю \(10^9 + 7\)
В приведенном примере отказоустойчивыми являются следующие множества из двух серверов: {1, 3}, {1, 4}, {1, 5}.
Баллы за каждую подзадачу начисляются только, если все тесты для этой подзадачи и всех необходимых подзадач успешно пройдены.
5 5 1 2 2 3 3 4 3 5 4 5
2 3
В игре «Гекс» используется доска в виде ромба, размера \(N\) строк по \(N\) шестиугольников (\(N\) целое, положительное, не более 20). На рисунке показано поле при \(N=5\). В игре принимают участие двое: первый игрок ходит белыми, второй – черными. За один ход можно поставить одну фишку в любой незанятый шестиугольник. Цель «белых» - соединить верхнюю и нижнюю сторону доски путем из белых фишек (двигаться можно только через сторону шестиугольника). Цель «черных» – соединить правую и левую стороны доски путем из черных фишек. Напишите программу, которая по заданной позиции определяет победили в ней белые или нет.
В первой строке файла input.txt записано число \(N\). В следующих \(N\) строках записано по одной строке, длиной \(N\) символов каждая. Символ ‘W’ (white) означает, что соответствующая клетка занята белой фишкой, символ ‘B’ (black) – черной, символ ‘E’ (empty) – клетка пуста.
В файл output.txt вывести слово YES, если белые выиграли (существует путь, соединяющий верхнюю и нижнюю строки) и слово NO в противном случае.
Комментарий ко второму примеру:
2 EE WW
NO
4 EWEE EWEE EWEE BWBB
YES
4 EEWW BWBE WBEB EEEE
NO
Для привлечения денег в казну министр финансов Его Величества Бубея Второго решил проводить ежемесячную лотерею. Лотерейный билет представляет собой таблицу \(5 \times 5\) клеток. В каждой клетке записана одна буква (напомним, что в Королевстве используются только заглавные английские буквы). Билет считается выигрышным, если на нем можно прочесть сумму (записанную прописью). Начинать чтение можно с любой клетки, перемещаясь только через стороны клеток. Возвращаться в уже прочитанную клетку – нельзя. На рисунке показан выигрышный билет на 50 монет – fifty.
Однако закон требует, чтобы не менее определенного процента билетов были выигрышными. Чтобы это гарантировать, в типографии по выпуску билетов используется компьютер.
Напишите программу, определяющую можно ли в данной таблице прочесть заданное слово.
В первой строке файла input.txt записано слово, состоящее из заглавных английских букв, длина слова не превышает 25 символов. В следующих 5 строках записано по 5 заглавных английских букв.
В файл output.txt выведите слово YES, если такое слово можно прочесть в заданной таблице и NO – если нет.
В первом примере:
THOUSAND OBUWS HLOMO LUSAP AOHND ZVTNX
YES
MILLION OBUWS HLIMO LUSAP AOHND ZVTNX
NO