| Codeforces Round 1077 (Div. 1) |
|---|
| Закончено |
Это подсчётная версия задачи. Разница между версиями заключается в том, что в этой версии вам нужно найти количество различных общих деревьев. Также ограничение на $$$n$$$ в этой версии ниже. Вы можете делать взломы, только если все версии задачи решены.
На Рождество Тортинита и Ариетта получили по рождественской ёлке. По случайному совпадению, их деревья имеют одинаковые свойства: оба имеют $$$n+1$$$ вершину и корень в вершине $$$0$$$. В своей рождественской открытке к вам каждая из них прилагает последовательность обхода DFS своего дерева после своих приветствий. Напомним, что последовательность обхода DFS генерируется следующим псевдокодом.
dfs_order = []
def dfs(v):
dfs_order.append(v)
выбрать любую перестановку s детей вершины v
for child in s:
dfs(child)
dfs(корень)
Пусть последовательность обхода DFS дерева Тортиниты будет $$$a_0, a_1, \ldots, a_n$$$, а дерева Ариетты — $$$b_0, b_1, \ldots, b_n$$$. Вы замечаете, что $$$a_0 = b_0 = 0$$$, и поскольку они сёстры-близнецы, вы задаетесь вопросом, могли ли они получить одно и то же дерево. Вы также чувствуете, что для своей рождественской ёлки сёстры не выберут тривиальную структуру. Поэтому вы хотите найти количество различных общих деревьев$$$^{\text{∗}}$$$ для обеих последовательностей. Так как ответ может быть очень большим, выведите его по модулю $$$998\,244\,353$$$.
$$$^{\text{∗}}$$$Два дерева считаются различными, если существует вершина, для которой множество номеров детей не совпадают в деревьях. Другими словами, порядок детей вершины не имеет значения.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$2 \le n \le \boldsymbol{5000}$$$).
Вторая строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$a_1, a_2, \cdots, a_n$$$ ($$$1 \le a_i \le n$$$).
Третья строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$b_1, b_2, \cdots, b_n$$$ ($$$1 \le b_i \le n$$$).
Гарантируется, что ни одна из последовательностей $$$a$$$ и $$$b$$$ не содержит дубликатов.
Гарантируется, что сумма значений $$$n^2$$$ по всем наборам входных данных не превосходит $$$2.5\cdot10^7$$$.
Для каждого набора входных данных выведите одно целое число — количество различных общих деревьев по модулю $$$998\,244\,353$$$.
421 21 221 22 153 5 1 2 43 1 5 4 252 1 4 5 32 4 1 5 3
2137
В первом наборе входных данных два разных дерева — это дерево A и дерево B на рисунке ниже. Обратите внимание, что дерево B и дерево C одинаковы.
Во втором наборе входных данных единственное общее дерево — это дерево B.
| Название |
|---|


