Задача №114695. Задача для разминки рук
Дано дерево на \(n\) вершинах с корнем в вершине \(1\). В \(i\)-й вершине записан символ \(t_i\) - одна из трёх латинских букв a , b , c . Также дана строка \(s\) длины \(m\), состоящая из строчных латинских букв a , b , c .
Каждой паре вершин \((u, v)\) естественным образом можно сопоставить строку, которая получается последовательным выписыванием символов в вершинах на единственном простом пути от \(u\) до \(v\), начиная с символа в вершине \(u\).
Вам нужно посчитать количество пар целых чисел \((u, v)\) таких, что \(1\leq u,v\leq n\), и строка, соответствующая пути от \(u\) до \(v\), лексикографически меньше или равна \(s\).
Деревом называется связный граф, где у каждой вершины кроме первой (первая вершина называется корнем) задан единственный предок, с которым вершина соединена ребром. Путём в дереве между вершинами \(u\) и \(v\) называется такая последовательность вершин, в которой \(u\) — первая вершина, \(v\) — последняя, и любые 2 подряд идущие вершины соединены ребром. Путь называется простым, если никакая из вершин не встречается в нем дважды.
Строка \(a\) считается лексикографически меньше строки \(b\), если существует такое число \(k\), что на всех позициях меньших \(k\) строки \(a\) и \(b\) совпадают, а на \(k\)-й позиции символ строки \(a\) лексикографически меньше соответствующего символа строки \(b\), или же в том случае, если длина строки \(a\) меньше длины строки \(b\), а все символы на одинаковых позициях у строк совпадают.
В первой строке вводятся два целых числа \(n\) и \(m\) (\(2 \le n \le 10^6\), \(1 \le m \le 10^6\)) — число вершин в дереве и длина строки для сравнения.
Во второй строке без пробелов вводятся \(m\) символов \(s_1s_2\ldots s_m\) — строка для сравнения.
В третьей строке без пробелов вводятся \(n\) символов \(t_1t_2\ldots t_n\), \(i\)-й из которых обозначает букву, записанную в вершине \(i\).
В следующей строке вводится \((n - 1)\) число \(p_2, p_3, p_4 \ldots, p_n\) (\(1 \le p_i \le n\)), где \(p_i\) обозначает номер предка вершины \(i\) в дереве.
Гарантируется, что каждый символ в данных строках \(s\) и \(t\) равен одной из строчных латинских букв « a », « b », « c », и что заданный граф действительно образует дерево.
Выведите единственное число — искомое количество пар.
В первом примере всего есть 9 пар чисел от 1 до 3. Парам \((1,1)\), \((1,2)\), \((1,3)\), \((3,3)\), \((3,1)\) соответствуют строки a , abc , ab , b , ba . Парам, где первое число 2, соответствуют строки, начинающиеся на c — эти строки в любом случае лексикографически больше строки ba . Паре \((3,2)\) соответствует строка bc , которая лексикографически больше ba .
Во втором примере всего есть 25 пар. Первым числом в паре не может быть 3, так как в вершине 3 записана буква c , которая меньше первой буквы \(s\). Также не подходят пары \((2,4)\) и \((5,4)\).
В третьем примере все символы в вершинах больше первой буквы \(s\), поэтому ни одна пара вершин не подходит.
Тесты к этой задаче состоят из 12 групп. Баллы за каждую группу ставятся только при прохождении всех тестов группы и всех тестов некоторых из предыдущих групп. Обратите внимание, прохождение тестов из условия не требуется для некоторых групп. Offline-проверка означает, что результаты тестирования вашего решения на данной группе станут доступны только после окончания соревнования.
Доп. ограничения | |||||||
Группа | Баллы | \(n\) | \(m\) | Необх. группы | Комментарий | ||
0 | 0 | – | – | – | Тесты из условия. | ||
1 | 11 | \(n \le 500\) | \(m \le 500\) | 0 | |||
2 | 8 | \(n \le 5000\) | \(m \le 5000\) | 0, 1 | |||
3 | 13 | \(n \le 30\,000\) | \(m \le 500\) | 0, 1 | Нет путей длины больше \(500\). | ||
4 | 10 | \(n \le 100\,000\) | \(m \le 100\,000\) | – | \(p_i = i - 1\) | ||
5 | 14 | \(n \le 100\,000\) | \(m \le 100\,000\) | – | \(s\) и \(t\) состоят из символов | laquo; a | raquo;. |
6 | 8 | \(n \le 100\,000\) | \(m \le 100\,000\) | 0–5 | |||
7 | 5 | \(n \le 200\,000\) | \(m \le 200\,000\) | 0–6 | |||
8 | 5 | \(n \le 350\,000\) | \(m \le 350\,000\) | 0–7 | |||
9 | 6 | \(n \le 500\,000\) | \(m \le 500\,000\) | 0–8 | |||
10 | 6 | \(n \le 650\,000\) | \(m \le 650\,000\) | 0–9 | Offline-проверка. | ||
11 | 7 | \(n \le 800\,000\) | \(m \le 800\,000\) | 0–10 | Offline-проверка. | ||
12 | 7 | – | – | 0–11 | Offline-проверка. |
3 2 ba acb 3 1
5
5 3 bac abcab 1 1 3 1
18
2 3 acc bb 1
0