洛谷P4924 魔法少女小Scarlet

题目

https://www.luogu.com.cn/problem/P4924

思路

水题,直接模拟即可,纯粹是因为二小姐太可爱了才去做这道题的。
二小姐卡哇伊!!!(震声)

然而手癌晚期的我开不了红魔乡extra

代码

#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int a[501][501];
void rightrotate(int x,int y,int r){
    int i,j,t=0,x1,x2,y1,y2,k;
    for(i=x-r;i<x;++i){
        for(j=y-r+t;j<y+r-t;++j){
            x1=i;y1=j;
            for(k=1;k<=3;k++){
                x2=x-(y1-y);y2=y+(x1-x);
                swap(a[x1][y1],a[x2][y2]);
                x1=x2;y1=y2;
            }
        }
        t++;
    }
}
void leftrotate(int x,int y,int r){
    int i,j,t=0,x1,x2,y1,y2,k;
    for(i=x-r;i<x;++i){
        for(j=y-r+t;j<y+r-t;++j){
            x1=i;y1=j;
            for(k=1;k<=3;k++){
                x2=x+(y1-y);y2=y-(x1-x);
                swap(a[x1][y1],a[x2][y2]);
                x1=x2;y1=y2;
            }
        }
        t++;
    }
}
int main(){
    int n,m,i,j,x,y,r,z;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;++i)
        for(j=1;j<=n;++j)
            a[i][j]=(i-1)*n+j;
    for(i=1;i<=m;i++){
        scanf("%d%d%d%d",&x,&y,&r,&z);
        if(z) leftrotate(x,y,r);
        else rightrotate(x,y,r);
    }
    for(i=1;i<=n;++i){
        for(j=1;j<=n;++j)
            printf("%d ",a[i][j]);
        printf("\n");
    }
//  system("pause");
    return 0;
}
posted @ 2020-11-25 15:35  文艺平衡树  阅读(249)  评论(0编辑  收藏  举报