#B4368. [语言月赛 202507] 代数瓜子式

[语言月赛 202507] 代数瓜子式

题目描述

给定一个 n×nn\times n 的数组 AA,其第 ii 行第 jj 列上的元素为 Ai,jA_{i,j}

现选定 kkkk 列从 AA 中删除,其它元素的相对位置不变。设删除后得到的数组为 BB,则 BB 的大小为 (nk)×(nk)(n-k)\times (n-k)

对于被删除的 kk 行和 kk 列,将交点处的元素按原相对顺序构成一个新数组 CC

例如,给定 4×44\times 4 数组 AA,删除第 1,31,3 行和 3,43,4 列,具体过程如下:

$$A = \left( \begin{matrix} 1 & 2 &3&4\\ 5&6&7&8\\ 9&10&11&12\\ 13&14&15&16 \end{matrix} \right) \qquad \begin{matrix} & & & \Downarrow & \Downarrow \\ \Rightarrow & \color{red} 1 & \color{red}2 & \boxed {\color{red}3} & \boxed {\color{red}4}\\ & 5 & 6 & \color{red}7 & \color{red}8\\ \Rightarrow & \color{red} 9 &\color{red}{10} & \boxed{\color{red}11} & \boxed{\color{red}12}\\ & 13 & 14 & \color{red}15 & \color{red}16 \end{matrix} $$

如上,被删除的行、列用双箭头标出。未被标记的元素没有被删除。被标记为红色的元素将被删除。被方框框住的元素即为被删除的行、列交点处的元素。因此,

$$ B = \left( \begin{matrix} 5 & 6 \\ 13 & 14 \end{matrix} \right) \qquad C = \left( \begin{matrix} 3 & 4 \\ 11 & 12 \end{matrix} \right) $$

定义一个对于 m×mm\times m 数组的运算 ff 为数组的正对角线上各元素之积减去反对角线上各元素之积。其中,第 ii 行第 ii 列上的元素在正对角线上,第 ii 行第 mi+1m-i + 1 列的元素在反对角线上。

例如:

$$ f\left( \begin{matrix} \color{red}1 & 2 & \color{green}3 \\ 4 & \color{blue}5 & 6 \\ \color{green}7 & 8 & \color{red}9 \end{matrix} \right)={\color{red}1\times {\color{blue}5}\times 9}-{\color{green}3\times{\color{blue}5}\times7}=-60 \\ f(B)=f\left( \begin{matrix} \color{red} 5 &\color{green} 6 \\ \color{green} 13 & \color{red}14 \end{matrix} \right)={\color{red}5\times 14}-{\color{green}6\times 13}=-8 \\ f(C)=f\left( \begin{matrix} \color{red} 3 &\color{green} 4 \\ \color{green} 11 & \color{red}12 \end{matrix} \right)={\color{red}3\times 12}-{\color{green}4\times 11}=-8 $$

如上,红色表示该元素在正对角线上,绿色表示该元素在反对角线上,蓝色表示该元素既在正对角线上,又在反对角线上。

对于 n×nn\times n 数组 AA 和删除的 kkkk 列,定义代数瓜子式为 f(B)×f(C)f(B)\times f(C) 的值。其中数组 B,CB,C 和运算 ff 的定义如上。

现给定 n×nn\times n 数组 AAqq 次询问若删除给定的 kkkk 列,所得代数瓜子式对 (109+7)(10^9+7) 取模的值。

这里的“取模”后的值总是为非负数。如果你正在使用 C++ 编写代码,你可以使用以下方法取模:

const int mod = 1000000007;
......

// 在某次运算中,假设要对 ans 变量取模
ans = ((ans % mod) + mod) % mod;

......

输入格式

第一行输入两个以空格分隔的正整数 n,qn,q

接下来 nn 行,每行输入 nn 个以空格分隔的整数,表示数组 AA

接下来 qq 行,每行一组询问,询问格式如下:

  • 首先输入一个正整数 kk,表示删除的行、列的数量。
  • 接下来按递增顺序输入 kk 个互不相同的正整数,表示要删除的行的编号。
  • 接下来按递增顺序输入 kk 个互不相同的正整数,表示要删除的列的编号。

输出格式

对于每组询问,输出一行一个整数表示答案。

4 2
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
2 1 3 3 4
2 2 3 1 2
64
48
4 3
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
1 1 1
1 2 4
3 1 2 3 2 3 4
0
0
0
5 7
3 1 4 1 5
9 2 6 5 3
5 3 5 8 9
7 9 3 2 3
8 4 6 2 6
2 1 2 3 4
3 1 2 3 2 3 4
2 1 3 1 3
3 1 3 5 1 3 5
2 1 4 3 5
3 1 3 4 2 4 5
1 1 1
999994715
540
0
4510
198
999997991
0

提示

样例 1 解释

此样例的第一组询问即为题目描述中的例子。

$$ B = \left( \begin{matrix} 5 & 6 \\ 13 & 14 \end{matrix} \right) \qquad C = \left( \begin{matrix} 3 & 4 \\ 11 & 12 \end{matrix} \right) \\ f(B)=f\left( \begin{matrix} \color{red} 5 &\color{green} 6 \\ \color{green} 13 & \color{red}14 \end{matrix} \right)={\color{red}5\times 14}-{\color{green}6\times 13}=-8 \\ f(C)=f\left( \begin{matrix} \color{red} 3 &\color{green} 4 \\ \color{green} 11 & \color{red}12 \end{matrix} \right)={\color{red}3\times 12}-{\color{green}4\times 11}=-8 $$

则代数瓜子式的值为 f(B)×f(C)=64f(B)\times f(C)=64

对于第二组询问,有:

$$ B = \left( \begin{matrix} 3 & 4 \\ 15 & 16 \end{matrix} \right) \qquad C = \left( \begin{matrix} 5 & 6 \\ 9 & 10 \end{matrix} \right) \\ f(B)=f\left( \begin{matrix} \color{red} 3 &\color{green} 4 \\ \color{green} 15 & \color{red}16 \end{matrix} \right)={\color{red}3\times 16}-{\color{green}4\times 15}=-12 \\ f(C)=f\left( \begin{matrix} \color{red} 5 &\color{green} 6 \\ \color{green} 9 & \color{red}10 \end{matrix} \right)={\color{red}5\times 10}-{\color{green}6\times 9}=-4 $$

则代数瓜子式的值为 f(B)×f(C)=48f(B)\times f(C)=48

样例 2 解释

注意对于所有 1×11\times 1 数组 AA,都有 f(A)=0f(A)=0,因此该样例的每一组输出均为 00

样例 3 解释

请注意输出答案对 (109+7)(10^9+7) 取模的值。

此样例的第 1,21,2 组询问满足特殊性质 C。

此样例的第 3,43,4 组询问满足特殊性质 B。

此样例的第 1,3,51,3,5 组询问满足特殊性质 A。

数据范围与约定

对于全部数据,满足 1k<n600,1q600,0Ai,j<1051\le k< n\le 600, 1\le q\le 600,0\le A_{i,j}<10^5。各测试点的详细数据范围见下表。

测试点 nn qq 特殊性质
141\sim 4 100\le 100
585\sim 8 600\le 600 A
9119\sim 11 B
121412\sim 14 C
152015\sim 20

特殊性质 A:保证 k=2k=2

特殊性质 B:保证第 ii 行和第 ii 列要么被同时删除,要么都不删除。

特殊性质 C:保证被删除的行、列的交恰好为原数组的一个子数组。