求助T_T自己测试没有问题,但前三个WA后面全超时!样例过了!迷惑ing
查看原帖
求助T_T自己测试没有问题,但前三个WA后面全超时!样例过了!迷惑ing
463591
秋夜Dx楼主2021/2/15 20:43
#include <iostream>
using namespace std;
struct B{
    int value;
    int x,y;    //第x列,第y行
}b[503*503];
int sum=1;

void revolve(int x,int y,int value,int z)   //旋转指定序号的数
{
    int rep;
    if(z)   //逆时针
        {
            rep=b[value].x;
            b[value].x=b[value].y+x-y;
            b[value].y=x+y-rep;
        }
    else    //顺时针
        {
            rep=b[value].x;
            b[value].x=x+y-b[value].y;
            b[value].y=y-x+rep;
        }
}
int main() {
    int n,m;
    cin >> n >> m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++,sum++)
        {
            b[sum].value=sum;
            b[sum].x=j;
            b[sum].y=i;
        }
    sum--;  //初始化完毕
    for(int i=0;i<m;i++)
    {
        int x,y,r,z;
        scanf("%d %d %d %d",&x,&y,&r,&z);
        for(int j=1;j<=sum;j++)
            if(x-r<=b[j].x && b[j].x<=x+r && y-r<=b[j].y && b[j].y<=y+r)
                revolve(x,y,j,z);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            for(int k=1;k<=sum;k++)
                if(b[k].y==i && b[k].x==j && j<n)
                    printf("%d ",k);
                else if(b[k].y==i && b[k].x==j)
                    printf("%d",k);
        if(i<n)
            printf("\n");
    }
    return 0;
}

2021/2/15 20:43
加载中...