CF1458C.Latin Square
省选/NOI-
通过率:0%
时间限制:2.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given a square matrix of size n. Every row and every column of this matrix is a permutation of 1, 2, …, n. Let ai,j be the element at the intersection of i-th row and j-th column for every 1≤i,j≤n. Rows are numbered 1,…,n top to bottom, and columns are numbered 1,…,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,j to ai,((j−2)modn)+1;
- L: cyclically shift all columns to the left, formally, set the value of each ai,j to ai,(jmodn)+1;
- D: cyclically shift all rows down, formally, set the value of each ai,j to a((i−2)modn)+1,j;
- U: cyclically shift all rows up, formally, set the value of each ai,j to a(imodn)+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 p1, p2, …, pn is a permutation q1, q2, …, qn, such that pqi=i for every 1≤i≤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,…,n.
Given the initial matrix description, you should process m operations and output the final matrix.
给你一个大小为 n 的方阵。该矩阵的每一行和每一列都是 1,2,…,n 的一个排列。对任意 1≤i,j≤n,记 ai,j 为第 i 行与第 j 列交点处的元素。行编号从上到下依次为 1,…,n,列编号从左到右依次为 1,…,n。
共有六种操作类型:
- R:将所有列向右循环移动一位,形式化地,将每个 ai,j 的值设为 ai,((j−2)modn)+1;
- L:将所有列向左循环移动一位,形式化地,将每个 ai,j 的值设为 ai,(jmodn)+1;
- D:将所有行向下循环移动一位,形式化地,将每个 ai,j 的值设为 a((i−2)modn)+1,j;
- U:将所有行向上循环移动一位,形式化地,将每个 ai,j 的值设为 a(imodn)+1,j;
- I:将每行从左到右读出的排列替换为其逆排列;
- C:将每列从上到下读出的排列替换为其逆排列。
排列 p1,p2,…,pn 的逆排列定义为排列 q1,q2,…,qn,使得对每个 1≤i≤n 均有 pqi=i。
可以验证,执行任意操作序列后,该矩阵的每一行和每一列仍均为 1,2,…,n 的一个排列。
给定初始矩阵,你需要依次处理 m 个操作,并输出最终的矩阵。
输入格式
The first line contains a single integer t (1≤t≤1000) — number of test cases. t test case descriptions follow.
The first line of each test case description contains two integers n and m (1≤n≤1000,1≤m≤105) — size of the matrix and number of operations.
Each of the next n lines contains n integers separated by single spaces — description of the matrix a (1≤ai,j≤n).
The last line of the description contains a string of m characters describing the operations in order, according to the format above.
The sum of n does not exceed 1000, and the sum of m does not exceed 105.
第一行包含一个整数 t(1≤t≤1000),表示测试用例的数量。随后是 t 个测试用例的描述。
每个测试用例描述的第一行包含两个整数 n 和 m(1≤n≤1000, 1≤m≤105),分别表示矩阵的大小和操作次数。
接下来的 n 行,每行包含 n 个由单个空格分隔的整数,表示矩阵 a 的描述(1≤ai,j≤n)。
该测试用例描述的最后一行是一个长度为 m 的字符串,按顺序描述所有操作,格式如上所述。
所有测试用例中 n 的总和不超过 1000,所有测试用例中 m 的总和不超过 105。
输出格式
For each test case, print n lines with n integers each — the final matrix after m operations.
对于每个测试用例,输出 n 行,每行包含 n 个整数——即经过 m 次操作后的最终矩阵。
输入输出样例
输入#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测评打分。不知道怎么写?