CodeForces - 1459E(思维)
90nwyn
2020-12-19 23:34:57
[题目链接](https://vjudge.net/problem/CodeForces-1459E)
------------
考虑每一种操作的本质,模拟
------------
```cpp
#include <bits/stdc++.h>
using namespace std;
const int M=1e5+5,N=1e3+5;
int n,m,a[N][N],c[3],v[3],ans[N][N];
char s[M];
int main()
{
int T;scanf("%d",&T);
while(T--)
{
for(int i=0;i<3;i++)c[i]=0,v[i]=i;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
scanf("%s",s+1);
for(int i=1;i<=m;i++)
if(s[i]=='L')c[v[1]]--;
else if(s[i]=='R')c[v[1]]++;
else if(s[i]=='U')c[v[0]]--;
else if(s[i]=='D')c[v[0]]++;
else if(s[i]=='I')swap(v[1],v[2]);
else if(s[i]=='C')swap(v[0],v[2]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
c[0]+=i-1;c[1]+=j-1;c[2]+=a[i][j]-1;
int x=(c[v[0]]+m*n)%n+1;
int y=(c[v[1]]+m*n)%n+1;
int val=(c[v[2]]+m*n)%n+1;
ans[x][y]=val;
c[0]-=i-1;c[1]-=j-1;c[2]-=a[i][j]-1;
}
for(int i=1;i<=n;i++,puts(""))
for(int j=1;j<=n;j++)
printf("%d ",ans[i][j]);
}
return 0;
}
```