CF2063F2 Counting Is Not Fun (Hard Version)

题目描述

这是该问题的困难版本。与简单版本的区别在于,此版本对 $t$ 和 $n$ 的限制更大。仅当解决所有版本的问题时方可进行 hack。 小 John 现在很富有,终于买得起能容纳自己和最喜爱括号序列的大房子了。但不知为何,他得到了大量括号!沮丧之下,他用"佛掌"击穿了天花板。一个括号序列被称为平衡的,当且仅当其可以通过以下形式文法构造: 1. 空序列 $\varnothing$ 是平衡的。 2. 若括号序列 $A$ 是平衡的,则 $\mathtt{(}A\mathtt{)}$ 也是平衡的。 3. 若括号序列 $A$ 和 $B$ 是平衡的,则拼接序列 $AB$ 也是平衡的。 例如,序列 "(())()"、"()"、"(()(()))" 和空序列是平衡的,而 "(()" 和 "(()))(" 则不是。 给定一个平衡括号序列 $s$,当满足以下条件时,索引对 $(i,j)$($i

输入格式

每个测试包含多个测试用例。第一行包含测试用例数量 $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$ 个整数: - 第一个整数表示未接收任何线索前的答案,对 $998\,244\,353$ 取模。 - 对于所有 $i \ge 1$,第 $i+1$ 个整数表示接收前 $i$ 条线索后的答案,对 $998\,244\,353$ 取模。

说明/提示

样例中的第一个测试用例已在题目描述中解释。 第三个测试用例的解释如下:可以证明存在 $132$ 个有 $6$ 个好对的平衡括号序列。每接收一条线索后的答案如下: 1. 收到好对 $(2,3)$ 后,存在 $42$ 个符合条件的序列。 2. 收到好对 $(1,6)$ 后,存在 $5$ 个同时包含 $(2,3)$ 和 $(1,6)$ 的序列。 3. 收到好对 $(7,8)$ 后,存在 $2$ 个满足三个好对的序列,分别为 "(()())()(())" 和 "(()())()()()"。 4. 收到好对 $(9,12)$ 后,仅剩 $1$ 个满足四个好对的序列,即 "(()())()(())"。 之后的第五、第六条线索接收后答案均为 $1$,因为此时已确定唯一序列。 翻译由 DeepSeek R1 完成