CF1458C.Latin Square

省选/NOI-

通过率:0%

时间限制:2.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a square matrix of size nn. Every row and every column of this matrix is a permutation of 11, 22, …\ldots, nn. Let ai,ja_{i, j} be the element at the intersection of ii-th row and jj-th column for every 1≤i,j≤n1 \leq i, j \leq n. Rows are numbered 1,…,n1, \ldots, n top to bottom, and columns are numbered 1,…,n1, \ldots, n left to right.

There are six types of operations:

  • R: cyclically shift all columns to the right, formally, set the value of each ai,ja_{i, j} to ai,((j−2) mod n)+1a_{i, ((j - 2)\bmod n) + 1};
  • L: cyclically shift all columns to the left, formally, set the value of each ai,ja_{i, j} to ai,(j mod n)+1a_{i, (j\bmod n) + 1};
  • D: cyclically shift all rows down, formally, set the value of each ai,ja_{i, j} to a((i−2) mod n)+1,ja_{((i - 2)\bmod n) + 1, j};
  • U: cyclically shift all rows up, formally, set the value of each ai,ja_{i, j} to a(i mod n)+1,ja_{(i\bmod n) + 1, j};
  • I: replace the permutation read left to right in each row with its inverse.
  • C: replace the permutation read top to bottom in each column with its inverse.

Inverse of a permutation p1p_1, p2p_2, …\ldots, pnp_n is a permutation q1q_1, q2q_2, …\ldots, qnq_n, such that pqi=ip_{q_i} = i for every 1≤i≤n1 \leq i \leq n.

One can see that after any sequence of operations every row and every column of the matrix will still be a permutation of 1,2,…,n1, 2, \ldots, n.

Given the initial matrix description, you should process mm operations and output the final matrix.

给你一个大小为 nn 的方阵。该矩阵的每一行和每一列都是 1,2,…,n1, 2, \ldots, n 的一个排列。对任意 1≤i,j≤n1 \leq i, j \leq n,记 ai,ja_{i, j} 为第 ii 行与第 jj 列交点处的元素。行编号从上到下依次为 1,…,n1, \ldots, n,列编号从左到右依次为 1,…,n1, \ldots, n。

共有六种操作类型:

  • R:将所有列向右循环移动一位,形式化地,将每个 ai,ja_{i, j} 的值设为 ai,((j−2) mod n)+1a_{i, ((j - 2)\bmod n) + 1};
  • L:将所有列向左循环移动一位,形式化地,将每个 ai,ja_{i, j} 的值设为 ai,(j mod n)+1a_{i, (j\bmod n) + 1};
  • D:将所有行向下循环移动一位,形式化地,将每个 ai,ja_{i, j} 的值设为 a((i−2) mod n)+1,ja_{((i - 2)\bmod n) + 1, j};
  • U:将所有行向上循环移动一位,形式化地,将每个 ai,ja_{i, j} 的值设为 a(i mod n)+1,ja_{(i\bmod n) + 1, j};
  • I:将每行从左到右读出的排列替换为其逆排列;
  • C:将每列从上到下读出的排列替换为其逆排列。

排列 p1,p2,…,pnp_1, p_2, \ldots, p_n 的逆排列定义为排列 q1,q2,…,qnq_1, q_2, \ldots, q_n,使得对每个 1≤i≤n1 \leq i \leq n 均有 pqi=ip_{q_i} = i。

可以验证,执行任意操作序列后,该矩阵的每一行和每一列仍均为 1,2,…,n1, 2, \ldots, n 的一个排列。

给定初始矩阵,你需要依次处理 mm 个操作,并输出最终的矩阵。

输入格式

The first line contains a single integer tt (1≤t≤10001 \leq t \leq 1000) — number of test cases. tt test case descriptions follow.

The first line of each test case description contains two integers nn and mm (1≤n≤1000,1≤m≤1051 \leq n \leq 1000, 1 \leq m \leq 10^5) — size of the matrix and number of operations.

Each of the next nn lines contains nn integers separated by single spaces — description of the matrix aa (1≤ai,j≤n1 \leq a_{i, j} \leq n).

The last line of the description contains a string of mm characters describing the operations in order, according to the format above.

The sum of nn does not exceed 10001000, and the sum of mm does not exceed 10510^5.

第一行包含一个整数 tt(1≤t≤10001 \leq t \leq 1000),表示测试用例的数量。随后是 tt 个测试用例的描述。

每个测试用例描述的第一行包含两个整数 nn 和 mm(1≤n≤1000, 1≤m≤1051 \leq n \leq 1000,\ 1 \leq m \leq 10^5),分别表示矩阵的大小和操作次数。

接下来的 nn 行,每行包含 nn 个由单个空格分隔的整数,表示矩阵 aa 的描述(1≤ai,j≤n1 \leq a_{i, j} \leq n)。

该测试用例描述的最后一行是一个长度为 mm 的字符串,按顺序描述所有操作,格式如上所述。

所有测试用例中 nn 的总和不超过 10001000,所有测试用例中 mm 的总和不超过 10510^5。

输出格式

For each test case, print nn lines with nn integers each — the final matrix after mm operations.

对于每个测试用例,输出 nn 行,每行包含 nn 个整数——即经过 mm 次操作后的最终矩阵。

输入输出样例

  • 输入#1

    5
    3 2
    1 2 3
    2 3 1
    3 1 2
    DR
    3 2
    1 2 3
    2 3 1
    3 1 2
    LU
    3 1
    1 2 3
    2 3 1
    3 1 2
    I
    3 1
    1 2 3
    2 3 1
    3 1 2
    C
    3 16
    1 2 3
    2 3 1
    3 1 2
    LDICRUCILDICRUCI

    输出#1

    2 3 1 
    3 1 2 
    1 2 3 
    
    3 1 2 
    1 2 3 
    2 3 1 
    
    1 2 3 
    3 1 2 
    2 3 1 
    
    1 3 2 
    2 1 3 
    3 2 1 
    
    2 3 1 
    3 1 2 
    1 2 3

说明/提示

Line breaks between sample test case answers are only for clarity, and don't have to be printed.

样例测试用例答案之间的换行仅用于提高可读性,无需输出。

输入解题思路,AI测评打分。不知道怎么写?

首页