Codeforces Round 1000 (Div. 2) |
---|
Закончено |
Это сложная версия задачи. Отличие между версиями заключается в том, что в этой версии ограничения на $$$t$$$ и $$$n$$$ больше. Вы можете делать взломы только в том случае, если решили все версии этой задачи.
Скобочная последовательность называется правильной, если она может быть построена по следующей формальной грамматике:
Например, последовательности «(())()», «()», «(()(()))» и пустая последовательность являются правильными, в то время как «(()» и «(()))(» — нет.
Дана правильная скобочная последовательность $$$s$$$, пара индексов $$$(i,j)$$$ ($$$i<j$$$) называется хорошей, если $$$s_i$$$ — это «(», а $$$s_j$$$ — это «)», и две скобки добавляются одновременно в соответствии с правилом 2 при построении последовательности $$$s$$$. Например, последовательность «(())()» имеет три разные хорошие пары: $$$(1,4)$$$, $$$(2,3)$$$ и $$$(5,6)$$$. Можно показать, что любая правильная скобочная последовательность из $$$2n$$$ скобок содержит ровно $$$n$$$ различных пар скобок, и использование любого порядка правил для построения одной и той же последовательности скобок приведет к одному и тому же набору пар скобок.
Эмили будет играть в игру по угадыванию скобок с Джоном. Игра проходит следующим образом.
Изначально у Джона есть правильная скобочная последовательность $$$s$$$, содержащая $$$n$$$ различных пар скобок, которая не известна Эмили. Джон говорит Эмили значение $$$n$$$ и просит Эмили угадать последовательность.
На протяжении $$$n$$$ ходов Джон дает Эмили следующие подсказки на каждом ходе:
Гарантируется, что подсказки, которые Джон дает Эмили, попарно различны и не противоречат друг другу.
В какой-то момент Эмили может быть уверена, что правильная скобочная последовательность, удовлетворяющая подсказкам, данным до сих пор, уникальна. Например, предположим, что Эмили знает, что $$$s$$$ имеет $$$3$$$ хорошие пары, и она содержит пару скобок $$$(2,5)$$$. Из $$$5$$$ правильных скобочных последовательностей с $$$3$$$ хорошими парами существует только одна такая последовательность «((()))» с парой скобок $$$(2,5)$$$. Следовательно, можно увидеть, что Эмили не всегда нужно $$$n$$$ ходов, чтобы угадать $$$s$$$.
Чтобы как можно раньше узнать содержимое $$$s$$$, Эмили хочет знать количество различных правильных скобочных последовательностей, которые соответствуют подсказкам после каждого хода. Конечно, это не легкая задача для Эмили, особенно когда ей дано настолько много хороших пар. Теперь ваша очередь помочь Эмили. Учитывая подсказки, вы должны найти ответ до всех ходов и после каждого хода. Поскольку ответы могут быть огромными, вам нужно найти их по модулю $$$998\,244\,353$$$.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$2 \le n \le 3 \cdot 10^5$$$) — количество хороших пар.
Затем каждая из следующих $$$n$$$ строк содержит два целых числа $$$l_i$$$ и $$$r_i$$$, представляющих $$$i$$$-ю подсказку ($$$1 \le l_i < r_i \le 2n$$$).
Подсказки в одном наборе входных данных попарно различны и не противоречат друг другу.
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$3 \cdot 10^5$$$.
Для каждого набора выведите $$$n+1$$$ целых числа в одной строке:
332 51 63 441 67 82 34 562 31 67 89 1210 114 5
5 1 1 1 14 2 2 1 1 132 42 5 2 1 1 1
Первый пример из примера объясняется в описании задачи.
Третий пример из примера объясняется следующим образом.
Можно показать, что существует $$$132$$$ сбалансированных последовательностей скобок с $$$6$$$ парами скобок. Ответы после каждой подсказки следующие:
Тогда количество правильных скобочных последовательностей после пятой и шестой подсказки равно $$$1$$$, поскольку вы уже знаете содержимое $$$s$$$.
Название |
---|