SZTG-L-CF1006F. Xor-Paths

提交1 通过1
通过率100%
时间限制3000ms
内存限制250MiB

题目描述

题目描述

有一个大小为 n×mn \times m 的矩形网格。每个格子上写有一个数字;第 (i,j)(i, j) 个格子上的数字为 ai,ja_{i, j}。你的任务是计算从左上角格子 (1,1)(1, 1) 到右下角格子 (n,m)(n, m) 的路径数,要求满足以下约束:

  • 你只能向右或向下移动。具体来说,从格子 (i,j)(i, j) 可以移动到 (i,j+1)(i, j + 1) 或 (i+1,j)(i + 1, j),目标格子不能超出网格范围。
  • 从 (1,1)(1, 1) 到 (n,m)(n, m) 路径上所有数字的异或和必须等于 kk(异或操作是按位异或,在 Java 或 C++ 中用 '^' 表示,在 Pascal 中用 "xor" 表示)。

请计算在给定网格中满足条件的路径数。

输入格式

输入的第一行包含三个整数 nn、mm 和 kk——网格的高度、宽度和目标异或值 kk。

接下来的 nn 行,每行包含 mm 个整数,第 ii 行第 jj 个元素为 ai,ja_{i, j}。

输出格式

输出一个整数,表示从 (1,1)(1, 1) 到 (n,m)(n, m) 且异或和等于 kk 的路径数。

3 3 11
2 1 5
7 10 0
12 6 4
3
3 4 2
1 3 3 3
0 3 3 2
3 0 1 1
5
3 4 1000000000000000000
1 3 3 3
0 3 3 2
3 0 1 1
0

说明 / 提示

第一个样例的所有路径:

  • $(1, 1) \rightarrow (2, 1) \rightarrow (3, 1) \rightarrow (3, 2) \rightarrow (3, 3)$;
  • $(1, 1) \rightarrow (2, 1) \rightarrow (2, 2) \rightarrow (2, 3) \rightarrow (3, 3)$;
  • $(1, 1) \rightarrow (1, 2) \rightarrow (2, 2) \rightarrow (3, 2) \rightarrow (3, 3)$。

第二个样例的所有路径:

  • $(1, 1) \rightarrow (2, 1) \rightarrow (3, 1) \rightarrow (3, 2) \rightarrow (3, 3) \rightarrow (3, 4)$;
  • $(1, 1) \rightarrow (2, 1) \rightarrow (2, 2) \rightarrow (3, 2) \rightarrow (3, 3) \rightarrow (3, 4)$;
  • $(1, 1) \rightarrow (2, 1) \rightarrow (2, 2) \rightarrow (2, 3) \rightarrow (2, 4) \rightarrow (3, 4)$;
  • $(1, 1) \rightarrow (1, 2) \rightarrow (2, 2) \rightarrow (2, 3) \rightarrow (3, 3) \rightarrow (3, 4)$;
  • $(1, 1) \rightarrow (1, 2) \rightarrow (1, 3) \rightarrow (2, 3) \rightarrow (3, 3) \rightarrow (3, 4)$。

由 ChatGPT 4.1 翻译

数据范围

(1≤n,m≤201 \le n, m \le 20,0≤k≤10180 \le k \le 10^{18})

(0≤ai,j≤10180 \le a_{i, j} \le 10^{18})