CF1366B Shuffle
题目描述
给定一个包含 $n$ 个整数的数组 $a_1, a_2, \ldots, a_n$。初始时,$a_x = 1$,其余所有元素均为 $0$。
你需要进行 $m$ 次操作。在第 $i$ 次操作中,你可以选择两个下标 $c$ 和 $d$,满足 $l_i \leq c, d \leq r_i$,然后交换 $a_c$ 和 $a_d$ 的值。
请计算有多少个下标 $k$,可以通过选择合适的操作,使得最终 $a_k = 1$。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 100$),表示测试用例的数量。接下来是 $t$ 组测试数据。
每组测试数据的第一行包含三个整数 $n$、$x$ 和 $m$($1 \leq n \leq 10^9$;$1 \leq m \leq 100$;$1 \leq x \leq n$)。
接下来的 $m$ 行,每行包含两个整数 $l_i$ 和 $r_i$($1 \leq l_i \leq r_i \leq n$),表示第 $i$ 次操作的区间。
输出格式
对于每个测试用例,输出一个整数,表示可以通过操作使得 $a_k = 1$ 的下标 $k$ 的数量。
说明/提示
在第一个测试用例中,可以让每个 $k$ 都满足 $a_k = 1$。具体做法如下:
1. 交换 $a_k$ 和 $a_4$;
2. 交换 $a_2$ 和 $a_2$;
3. 交换 $a_5$ 和 $a_5$。
在第二个测试用例中,只有 $k = 1$ 和 $k = 2$ 是可能的答案。要让 $a_1 = 1$,你需要在第二次操作时交换 $a_1$ 和 $a_1$。要让 $a_2 = 1$,你需要在第二次操作时交换 $a_1$ 和 $a_2$。
由 ChatGPT 4.1 翻译