CF2144C Non-Descending Arrays
题目描述
给定两个长度为 $n$ 的整数数组 $a$ 和 $b$。
你可以选择任意一组下标的子集,并将这些位置上的元素进行交换(即对于每个下标 $i$,执行 swap($a_i$, $b_i$))。如果在交换之后,两个数组都按非递减顺序排列,则该下标子集被认为是“好的子集”。
你的任务是计算“好子集”的数量。由于答案可能很大,请输出对 $998244353$ 取模后的结果。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 500$)——表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 100$)。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \leq a_i \leq 1000$)。
第三行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$($1 \leq b_i \leq 1000$)。
输入保证对于每组测试数据,至少存在一个好子集。
输出格式
对于每个测试用例,输出一个整数,表示好子集的数量,对 $998244353$ 取模。
说明/提示
在第一个样例中,有 $2$ 个好子集:$\{1, 3\}$ 和 $\{2\}$。
在第二个样例中,有 $2$ 个好子集:$\{1\}$ 和 $\{\}$。
在第三个样例中,有 $8$ 个好子集:$\{1, 2, 3, 4, 5\}$,$\{1, 2, 3\}$,$\{1, 2, 4, 5\}$,$\{1, 2\}$,$\{3, 4, 5\}$,$\{3\}$,$\{4, 5\}$ 和 $\{\}$。
由 ChatGPT 5 翻译