308050: CF1458C. Latin Square

Memory Limit:512 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Latin Square

题意翻译

$T$ 组测试数据,每次给一个 $n\times n$ 的矩阵,每行每列都是个 $1\to n$ 的排列。有 $m$ 次操作,如果是 `UDLR` 就是要把整个矩阵每行/每列往一个方向循环移动一格。如果是 `IC`,就是把矩阵每行/每列变成原来的逆排列。求最后的矩阵。 数据范围:$1\le T\le 1000$,$1\le \sum n\le 1000$,$1\le \sum m\le 10^5$,$1\le a_{i,j}\le n$。

题目描述

You are given a square matrix of size $ n $ . Every row and every column of this matrix is a permutation of $ 1 $ , $ 2 $ , $ \ldots $ , $ n $ . Let $ a_{i, j} $ be the element at the intersection of $ i $ -th row and $ j $ -th column for every $ 1 \leq i, j \leq n $ . Rows are numbered $ 1, \ldots, n $ top to bottom, and columns are numbered $ 1, \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 $ a_{i, j} $ to $ a_{i, ((j - 2)\bmod n) + 1} $ ; - L: cyclically shift all columns to the left, formally, set the value of each $ a_{i, j} $ to $ a_{i, (j\bmod n) + 1} $ ; - D: cyclically shift all rows down, formally, set the value of each $ a_{i, j} $ to $ a_{((i - 2)\bmod n) + 1, j} $ ; - U: cyclically shift all rows up, formally, set the value of each $ a_{i, j} $ to $ a_{(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 $ p_1 $ , $ p_2 $ , $ \ldots $ , $ p_n $ is a permutation $ q_1 $ , $ q_2 $ , $ \ldots $ , $ q_n $ , such that $ p_{q_i} = i $ for every $ 1 \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, \ldots, n $ . Given the initial matrix description, you should process $ m $ operations and output the final matrix.

输入输出格式

输入格式


The first line contains a single integer $ t $ ( $ 1 \leq t \leq 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 \leq n \leq 1000, 1 \leq m \leq 10^5 $ ) — 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 \leq a_{i, j} \leq 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 $ 10^5 $ .

输出格式


For each test case, print $ n $ lines with $ n $ integers each — the final matrix after $ m $ operations.

输入输出样例

输入样例 #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.

Input

题意翻译

$T$ 组测试数据,每次给一个 $n\times n$ 的矩阵,每行每列都是个 $1\to n$ 的排列。有 $m$ 次操作,如果是 `UDLR` 就是要把整个矩阵每行/每列往一个方向循环移动一格。如果是 `IC`,就是把矩阵每行/每列变成原来的逆排列。求最后的矩阵。 数据范围:$1\le T\le 1000$,$1\le \sum n\le 1000$,$1\le \sum m\le 10^5$,$1\le a_{i,j}\le n$。

加入题单

上一题 下一题 算法标签: