CF1534C Little Alawn's Puzzle
题目描述
当他不在为 IOI 训练时,Little Alawn 喜欢玩各种类型的益智游戏来锻炼大脑。今天,他正在玩一个由 $2 \times n$ 的网格组成的谜题,其中每一行都是 $1,2,3,\ldots,n$ 的一个排列。
Little Alawn 的谜题目标是确保同一列或同一行中没有相同的数字(我们称这种状态为“已解”),为此他可以交换任意一列中的两个数字。然而,在多次解开谜题后,Little Alawn 感到有些无聊,于是开始思考:仅通过交换每一列中的数字,从一个初始的已解状态出发,他最多能得到多少种不同的已解状态?
不幸的是,Little Alawn 在解决这个更难的问题时遇到了困难,所以他希望你能帮他解决。请你计算答案对 $10^9+7$ 取模后的结果。
输入格式
每个测试点包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($2 \le n \le 4 \cdot 10^5$)。
接下来的两行描述了谜题网格的初始状态。每一行都是 $1,2,3,\ldots,n$ 的一个排列,并且每一列和每一行中的数字都是两两不同的。
保证所有测试用例中 $n$ 的总和不超过 $4 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示 Little Alawn 仅通过交换每一列中的数字,从初始已解状态出发,最多能得到多少种不同的已解状态。由于答案可能很大,请输出对 $10^9+7$ 取模后的结果。
每个测试用例的答案输出在单独一行。
说明/提示
例如第 1 个样例的两种可能谜题配置为:
- 第一行为 $[1,4,2,3]$,第二行为 $[3,2,1,4]$;
- 第一行为 $[3,2,1,4]$,第二行为 $[1,4,2,3]$。
由 ChatGPT 4.1 翻译