#P15947. [Roi2016 Team]表格变换
[Roi2016 Team]表格变换
题目描述
有一个 的表格,行编号为 到 ,列编号为 到 。初始时,单元格 中的数为:
需要执行 次操作,操作有三类:
| 操作 | 形式 | 含义 |
|---|---|---|
| 交换列 | c x y |
交换第 列和第 列的内容 |
| 交换行 | r x y |
交换第 行和第 行的内容 |
| 交换单元格 | f a b c d |
交换单元格 与 的内容 |
执行完所有操作后,计算表格校验和:
$$\sum_{i,j} v[i][j]\times 17^i\times 19^j \bmod (10^9+7),$$其中 为最终表格中单元格 的值。
由于输入过大,操作参数通过数组扩展生成。
数组扩展规则
给定长度为 的非负整数数组 ,其中 。它按模 扩展到长度 后得到数组 :
- 若 ,则 ;
- 若 ,则
输入格式
第一行包含三个整数 。
第二行包含长度为 的字符串 ,表示每次操作类型:
c表示交换列;r表示交换行;f表示交换单元格。
接下来四行分别描述数组 。每行格式为:先给出 ,再给出 个整数。
约束:
- ;
- ;
- ;
- ;
- 的元素范围为 ;
- 的元素范围为 。
令 分别为四个数组按对应模数扩展到长度 的结果。第 次操作由 和这些数组确定:
- 若 ,操作为
c Bx[i] Dx[i]; - 若 ,操作为
r Ax[i] Cx[i]; - 若 ,操作为
f Ax[i] Bx[i] Cx[i] Dx[i]。
输出格式
输出一个整数:所有操作执行完后的校验和。
样例输入
3 5 3
crf
3 0 0 0
3 0 0 1
3 0 1 1
3 1 0 2
样例输出
564830737
示意图
初始 表格如下。

依次执行 c 0 1、r 0 1、f 0 1 1 2 后,表格变化如下。
