测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A16574. Nested Segments

编程题 提高+/省选-
知识点

题目描述

如果 $1\le l\le r\le n$ 且 $A$ 中任何一对不同的线段 $[l_i, r_i], [l_j, r_j]$ 都恰好满足以下条件之一,那么由具有整数端点的成对不同线段 $[l, r]$ 组成的集合 $A$ 是好的:

- $r_i < l_j$ 或 $r_j < l_i$ (线段不相交)
- $l_i \le l_j \le r_j \le r_i$ 或 $l_j \le l_i \le r_i \le r_j$ (一条线段完全包含在另一条线段中)

给你一个由 $m$ 对不同的线段 $[l_i, r_i]$ 组成的好的集合 $S$。您希望在确保集合 $S$ 是好的的前提下,尽可能多地向集合 $S$ 添加线段。

由于这项任务过于简单,因此您需要确定有多少种不同的方法可以在确保集合 $S$ 是好的的情况下,向 $S$ 添加最大数量的额外线段。如果在其中一种方法中增加了一条线段,而在另一种方法中没有增加,那么这两种方法就被认为是不同的。

形式化的,我们需要找出由不同的线段组成的好的的集合 $T$ 的个数,使得 $S$ 是 $T$ 的子集,且 $T$ 的大小最大。由于结果可能很大,请计算答案对 $998\,244\,353$ 取模后的结果。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 $t$( $1 \le t \le 10^4$ )。测试用例说明如下。

每个测试用例的第一行包含两个整数 $n$ 和 $m$($1 \le n \le 2 \times 10^5$,$0 \le m \le 2 \times 10^5$)—线段的最大右端点和 $S$ 的大小。

接下来 $m$ 行的 $i$\-th 包含两个整数 $l_i$ 和 $r_i$($1 \le l_i \le r_i \le n$)—即集合 $S$ 中的线段边界。

保证给定的集合 $S$ 是好的,并且集合 $S$ 中的线段是成对不同的。

保证所有测试用例中 $n$ 和 $m$ 的总和不超过 $2 \times 10^5$。

输出格式

对于每个测试用例,输出一个整数,表示在确保集合 $S$ 是好的的情况下,在集合 $S$ 中添加最大数量的额外线段的不同方式的数量,模数为 $998\,244\,353$ 。

输入输出样例

输入 #1
6
1 0
2 3
1 1
2 2
1 2
5 2
1 3
2 3
4 1
1 1
6 2
1 3
4 6
2300 0
输出 #1
1
1
2
5
4
187997613

说明/提示

在第一个例子中,唯一可能的线段是 $[1, 1]$ ,因此 $T = \{[1, 1]\}$ 的大小最大,也是唯一的解。

在第二个示例中,无法向集合 $S$ 添加任何额外的线段。因此,向 $S$ 添加线段的唯一方法就是不添加任何线段。

在第三个例子中,在确保集合 $S$ 仍然良好的情况下,可以向 $S$ 添加 $7$ 条额外的线段。我们可以证明,在 $S$ 中添加超过 $7$ 条线段是不可能的。恰好有 $2$ 种不同的方法可以将这些 $7$ 条线段添加到 $S$ 中,它们各自的集合 $T$ 如下所示:

- $\{[1, 1], [1, 3], [1, 4], [1, 5], [2, 2], [2, 3], [3, 3], [4, 4], [5, 5]\}$
- $\{[1, 1], [1, 3], [1, 5], [2, 2], [2, 3], [3, 3], [4, 4], [4, 5], [5, 5]\}$ .

在第四个例子中,正好有 $5$ 种不同的方法可以将最多 $6$ 条额外的线段添加到 $S$ 中,它们各自的集合 $T$ 如下所示:

- $\{[1, 1], [1, 2], [1, 3], [1, 4], [2, 2], [3, 3], [4, 4]\}$
- $\{[1, 1], [1, 2], [1, 4], [2, 2], [3, 3], [3, 4], [4, 4]\}$
- $\{[1, 1], [1, 3], [1, 4], [2, 2], [2, 3], [3, 3], [4, 4]\}$
- $\{[1, 1], [1, 4], [2, 2], [2, 3], [2, 4], [3, 3], [4, 4]\}$
- $\{[1, 1], [1, 4], [2, 2], [2, 4], [3, 3], [3, 4], [4, 4]\}$
上一题 去做题 下一题