luogu#P10267. 机器人

机器人

题目背景

画师:白森 さわ(from pixiv),侵删。

题目描述

真寻连清理炸弹都懒得自己使用,于是美波里又发明了一款全自动扫地机器人来清理房间。

真寻的房间由 nnmm 列的方砖组成,第 ii 行第 jj 列的方砖上的灰尘数量为 ai,ja_{i,j}。美波里的机器人每天会从房间的左上角出发,每次随机往右或往下走一步。

若机器人在没有撞墙的情况下走到了右下角,那么它会返回它经过的所有方砖的灰尘数量的异或和给美波里;若机器人在走到右下角之前撞了墙,即某一步的目标位置不存在,那么机器人会返回一个错误值 xx 并结束移动。

现给出某一天真寻的房间中每一块方砖上的灰尘数量,请你求出机器人返回值的期望值。

形式化地,给定一 n×mn\times m 的矩阵 aa,第 ii 行第 jj 列的权值为 ai,ja_{i,j},现有一机器人从 (1,1)(1,1) 出发,每次各有 12\frac{1}{2} 的概率从 (i,j)(i,j) 移动至 (i,j+1)(i,j+1)(i+1,j)(i+1,j);若机器人移动至 (n,m)(n,m),则返回路径点权异或和;若在移动至 (n,m)(n,m) 前有任意时刻移动至矩阵外,则返回 xx;求返回值的期望值。

答案对 109+710^9+7 取模。

输入格式

第一行三个整数 n,m,xn,m,x,分别表示方砖行数、列数及错误值;

接下来 nn 行,每行 mm 个整数,第 ii 行第 jj 列的整数表示 ai,ja_{i,j},描述每一块方砖上的灰尘数量。

输出格式

一行一个整数 ansans,表示期望值在模 109+710^9+7 意义下的值。

若对有理数取余有疑惑,请参照 P2613 【模板】有理数取余

2 3 5
7 18 4
10 6 3
375000011
6 5 0
9 4 6 2 3
6 4 4 0 1
2 0 4 3 0
1 5 7 3 4
5 0 2 1 5
6 4 9 8 3
99609378

提示

样例 1\mathbf{1} 解释

若机器人第一步往下走,则:

  • 若机器人第二步往下走,则撞墙,返回 55,概率为 14\frac{1}{4}

  • 若机器人第二步往右走,则:

    • 若机器人第三步往下走,则撞墙,返回 55,概率为 18\frac{1}{8}

    • 若机器人第三步往右走,则到达右下角,返回 71063=87\oplus 10\oplus 6\oplus 3=8,概率为 18\frac{1}{8}

若机器人第一步往右走,则:

  • 若机器人第二步往下走,则:

    • 若机器人第三步往下走,则撞墙,返回 55,概率为 18\frac{1}{8}

    • 若机器人第三步往右走,则到达右下角,返回 71863=167\oplus 18\oplus 6\oplus 3=16,概率为 18\frac{1}{8}

  • 若机器人第二步往右走,则:

    • 若机器人第三步往下走,则到达右下角,返回 71843=187\oplus 18\oplus 4\oplus 3=18,概率为 18\frac{1}{8}

    • 若机器人第三步往右走,则撞墙,返回 55,概率为 18\frac{1}{8}

因此,返回值的期望值为 $\frac{3\times 5+8+16+18}{8}+\frac{5}{4}=\frac{67}{8}$,在模 109+710^9+7 意义下为 375000011375000011

数据范围

对于所有数据,1n,m1031\leq n,m\leq 10^30ai,j,x1090\leq a_{i,j},x\leq 10^9

本题共 2222 个测试点,采用捆绑测试,子任务及数据点分配如下:

子任务编号 数据点编号 特殊性质 分值
00 141\sim 4 n,m12n,m\leq 12 1010
11 585\sim 8 n,m20n,m\leq 20 2020
22 9129\sim 12 ai,j20a_{i,j}\leq 20
33 131613\sim 16 x=0x=0
44 172217\sim 22 无特殊限制 3030

提示

\oplus 表示异或(bitwise xor),x1,x2,x3,,xnx_1,x_2,x_3,\cdots,x_n 的异或和为 x1x2x3xnx_1\oplus x_2\oplus x_3\oplus\cdots \oplus x_n