Codeforces Round 967 (Div. 2) |
---|
Закончено |
Это сложная версия задачи. Разница между двумя версиями заключается в определении детерминированной max-кучи, ограничении на время и ограничениях на $$$n$$$ и $$$t$$$. Вы можете совершать взломы только в том случае, если решены обе версии задачи..
Рассмотрим полное бинарное дерево размером $$$2^n - 1$$$, с вершинами, пронумерованными от $$$1$$$ до $$$2^n-1$$$, и корнем в $$$1$$$. Для каждой вершины $$$v$$$ ($$$1 \le v \le 2^{n - 1} - 1$$$) вершина $$$2v$$$ является ее левым ребенком, а вершина $$$2v + 1$$$ — ее правым ребенком. Каждой вершине $$$v$$$ также присвоено значение $$$a_v$$$.
Определим операцию $$$\mathrm{pop}$$$ следующим образом:
Мы говорим, что операция $$$\mathrm{pop}$$$ является детерминированной, если существует единственный способ выполнить такую операцию. Другими словами, $$$a_{2v} \neq a_{2v + 1}$$$ выполняется на каждом шаге операции.
Бинарное дерево называется max-кучей, если для каждой вершины $$$v$$$ ($$$1 \le v \le 2^{n - 1} - 1$$$) выполняется $$$a_v \ge a_{2v}$$$ и $$$a_v \ge a_{2v + 1}$$$.
Максимальная куча является детерминированной, если операция $$$\mathrm{pop}$$$ детерминирована для кучи, когда мы выполняем ее в первый и второй раз.
Изначально $$$a_v := 0$$$ для каждой вершины $$$v$$$ ($$$1 \le v \le 2^n - 1$$$), и ваша цель — посчитать количество различных детерминированных max-куч, которые можно получить в результате применения следующей операции $$$\mathrm{add}$$$ ровно $$$k$$$ раз:
Две кучи считаются разными, если есть вершина, которая имеет разные значения в этих кучах.
Поскольку ответ может быть очень большим, выведите его по модулю $$$p$$$.
Каждый тест состоит из нескольких наборов входных данных. Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 50$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит три целых числа $$$n, k, p$$$ ($$$2 \le n \le 100$$$, $$$1 \le k \le 500$$$, $$$10^8 \le p \le 10^9$$$, $$$p$$$ — простое).
Гарантируется, что сумма $$$n$$$ не превышает $$$100$$$, а сумма $$$k$$$ по всем наборам входных данных не превосходит $$$500$$$.
Для каждого набора входных данных выведите единственную строку, содержащую целое число: количество различных детерминированных max-куч, которое можно получить в результате применения вышеупомянутой операции $$$\mathrm{add}$$$ ровно $$$k$$$ раз, по модулю $$$p$$$.
62 1 9982443533 2 9982448533 3 9982443533 4 1000000374 2 1000000394 3 100000037
2 12 40 100 32 224
1100 500 100000037
66681128
287 63 10000003713 437 100000039
83566569 54517140
Для первого набора входных данных, если мы выберем $$$v = 1$$$ и выполним операцию, у нас будет $$$a = [1, 0, 0]$$$, а поскольку $$$a_2 = a_3$$$, мы можем выбрать любой из них при выполнении первой операции $$$\mathrm{pop}$$$, поэтому такая куча не является детерминированной max-кучей.
А если мы выберем $$$v = 2$$$, у нас будет $$$a = [1, 1, 0]$$$, то при выполнении первой операции $$$\mathrm{pop}$$$ произойдет следующее:
А во время второго $$$\mathrm{pop}$$$ произойдет следующее:
Поскольку и первая, и вторая операция $$$\mathrm{pop}$$$ детерминированы, это детерминированная max-куча. Также, если мы выберем $$$v = 3$$$, то $$$a$$$ будет детерминированной max-кучей, так что ответ — $$$2$$$.
Название |
---|