CodeForces - 1459E(思维)

90nwyn

2020-12-19 23:34:57

Personal

[题目链接](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; } ```