Комбинаторика

5 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
К Коле на день рождения придут n друзей.
По этому случаю он заготовил n бутылок различных напитков, а каждый из друзей принесет свой стакан.

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

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

 Входные данные
В первое строке дано число t - число тестовых наборов (1≤t≤100).
Каждый тестовый набор задается тремя строками. В первой из них дано число ni - число стаканов и бутылок напитков в i-ом наборе (1≤ni≤105).
Во второй строке даны ni чисел bi,j - объемы стаканов в i-м наборе (1≤ai,j,bi,j≤100).
В третьей строке заданы ni чисел ai,j - объемы бутылок в i-м наборе.
Гарантируется, что сумма ni по всем тестовым наборам не превосходит 3⋅105.

Выходные данные
Для каждого тестового набора выведите одно число - число способов разлить напитки по стаканам друзей так, чтобы все напитки полностью поместились в стаканы, взятое по модулю 1 000 000 007.
 
Примеры
Входные данные Выходные данные Пояснение
1 3
3
1 1 1
1 2 1
5
1 2 3 4 5
1 2 3 4 5
3
2 2 2
2 1 2
0
1
6
В первом тестовом наборе второй напиток не помещается ни в один стакан, поэтому ответ будет ноль. Во втором тестовом наборе, существует лишь один способ разлить напитки. В третьем наборе любой напиток можно налить в любой стакан.
Фермер Джон придумал игру для своих коров
 
Она играется на решётке R*C (2 <= R <= 750, 2 <= C <= 750), где каждый квадрат помечен целым числом от 1 до K (1 <= K <= R*C). Коровы выполняют последовательность прыжков, начиная в левом верхнем квадрате и заканчивая в правом нижнем квадрате и прыжок является корректным если и только если:
 
1) Вы прыгаете на квадрат c другим числом
 
2) Квадрат, куда Вы прыгаете, как минимум на одну строку ниже квадрата, в котором Вы сейчас стоите
 
3) Квадрат, в который Вы прыгаете как минимум на одну колонку правее квадрата, в котором Вы сейчас стоите
 
Пожалуйста, помогите коровам вычислить количество возможных различных последовательностей корректных прыжков из левого верхнего квадрата в правый нижний.
 
INPUT FORMAT:
Первая строка ввода содержит целые числа R, C, K. Каждая из следующих R строк содержит C целых чисел, каждое в интервале 1..K.
 
OUTPUT FORMAT
Выведите количество различных способов пропрыгать из левого верхнего угла в правый нижний, по модулю 1000000007.
 
Ввод Вывод
4 4 4
1 1 1 1
1 3 2 1
1 2 4 1
1 1 1 1
5
Ферма Джона представлена решёткой N×N полей (1≤N≤500). Каждое поле представлено символом латинского алфавита. Например:
ABCD
BXZX
CDXB
WCBA
Каждый день корова Беси прогуливается из верхнего левого угла в правый нижний, каждый раз двигаясь на один шаг вправо или вниз. Беси записывает в строку буквы, по которым прошлась. Она огорчится, если у неё получится палиндром (слово, которое читается одинаково слева направо и справа налево), поскольку тогда она запутается, в каком направлении двигалась.
 
Пожалуйста, помогите Беси определить количество различных маршрутов которыми она может получить палиндромы. Различные пути, которыми получаются одинаковые палиндромы учитывать множество раз. Выведите свой ответ по модулю 1,000,000,007.
 
ФОРМАТ ВВОДА:
Первая строка ввода содержит N, и последующие N строк содержат N строк решётки, описывающей поля. Каждая строка содержит N символов в интервале A..Z.
 
ФОРМАТ ВЫВОДА:
Выведите количество различных путей Беси, формирующих палиндромы по модулю 1,000,000,007.
 
Ввод Вывод
4
ABCD
BXZX
CDXB
WCBA
12
Примечание:
Беси может сделать следующие палиндромы:
 
1 x "ABCDCBA"
1 x "ABCWCBA"
6 x "ABXZXBA"
4 x "ABXDXBA"
В государстве Чудаков N городов ( 2 <=N <= 16 ), обозначаемых заглавными латинскими буквами, начиная с A, по порядку. Между некоторыми из них проложены дороги, которые могут быть как односторонними, так и двусторонними, причем не обязательно, что из каждого города можно проехать в любой другой.

В государстве всего один маршрут автобуса – 'Ч', который совершает только один рейс каждый день. Выходя из некоторого города, он совершает ровно N переездов между городами так, чтобы вернуться в тот, из которого выехал. Других ограничений на его маршрут нет. В течение дня автобус может несколько раз проезжать один и тот же город или дорогу. В каждом городе существуют автобусные парки, из которых могут выезжать автобусы маршрута 'Ч'. Так что, хотя автобус каждый день возвращается в город, из которого стартовал в этот день, на следующий день начало маршрута 'Ч' может быть из любого другого города. Но рейс каждый день только один.

Маршрут обозначается N буквами, начиная с города, из которого происходит выезд. Например, BCDCE – допустимый маршрут для государства из 5 городов ссоответствующими дорогами: выехать из B, проехать в C, затем в D, вернуться в C, проехать в E и вернуться в изначальный город B (последний пункт маршрута, совпадающий с первым, в маршруте не указывается).

Маршрут автобуса меняется каждый день так, что список маршрутов по дням расположен в словарном порядке и содержит все возможные маршруты. Когда список кончается, его обход начинается сначала. В первый день введения маршрута 'Ч' автобус шёл по первому по порядку маршруту. Выведите его маршрут на день K работы маршрута. Пример: В государстве четыре города: A, B, C, D. Наличие дорог между ними задано матрицей, где элемент равен 1, если из города, соответствующего строке, в город, соответствующий столбцу, есть дорога, и 0 – иначе (на главной диагонали нули – дорог, ведущих назад в тот же город, не бывает).

 
откуда/куда A B C D
A 0 0 1 1
B 1 0 1 1
C 0 1 0 0
D 0 1 1 0


Полное расписание маршрутов в таком государстве выглядит так:
ADCB
BADC
BCBC
BCBD
BDBC
BDBD
CBAD
CBCB
CBDB
DBCB
DBDB
DCBA

Таким образом, например, маршрут на день 30 – это BDBD.

Формат входных данных
В первой строке указывается количество городов N ( 2<= N <= 16 ). Далее следует N строк по N элементов (цифр), разделенных пробелом, содержащих матрицу, задающую дороги между городами. Далее следует строка содержащая целое число D – номер дня, маршрут которого требуется определить ( 1<= D <= 264 ).

Формат выходных данных
В единственной строке указывается маршрут, т.е. порядок посещения городов, например BDBD (см. предыдущий пример).
 
Ввод Вывод
3
0 1 1
1 0 1
1 1 0
4
BCA

 
На уроке информатике Антон Витальевич задал придумать задачи на перестановки. Ребята в 43 кабинете очень обрадовались этому заданию и решили придумать n гробов для своего класса. Сложность каждой задачи – это число от 1 до n. Ребята хотят узнать насколько, они «загробили» контест, коэффициент «загробленности» (КЗ) считается, как номер перестановки, которую подали на ввод. Ребята радуются, если КЗ будет больше, чем сумма разниц между двумя подряд идущими элементами в данной перестановки по модулю умноженная на количество гробов в контесте.
 
Вывести “positumque loculum” (гроб), если ребята будут рады своей работе, иначе вывести наименьшую подходящую перестановку (элементы разделять пробелами), номер которой |КЗ – номер текущей| <= k, а если это невозможно, то вывести “easily”.
 
В первой строке вводится количество гробов в контесте n <= 7 и k, 0 <= k <= n!
 
Во второй строке вводится сама перестановка.
Ввод Вывод
7 2518
7 5 2 4 1 6 3
positumque loculum
4 1
3 2 4 1
easily
4 2
3 2 4 1
3 4 2 1


Приятного решения ♥♥
(с) Елизавета Ястреба

Поделиться
Класснуть