有一个点总是超时

#include<bits/stdc++.h>
using namespace std;
int n,m,k;
short a[1605][1605],b[1605][1605];
char ch;
void shun()
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            b[j][n+1-i]=a[i][j];
    swap(n,m);
    memcpy(a,b,sizeof b);
}
void ni()
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            b[m+1-j][i]=a[i][j];
    swap(n,m);
    memcpy(a,b,sizeof b);
}
void shui_ping()
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            b[i][m+1-j]=a[i][j];
    memcpy(a,b,sizeof b);
}
void chui_zhi()
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            b[n+1-i][j]=a[i][j];
    memcpy(a,b,sizeof b);
}
int main()
{
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>a[i][j];
    for(int i=1;i<=k;i++)
    {
        cin>>ch;
        switch(ch)
        {
            case 'A':shun();break;
            case 'B':ni();break;
            case 'C':shui_ping();break;
            case 'D':chui_zhi();break;
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            cout<<a[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}

1 条评论

  • @ 2023-07-15 22:10:53
    //有优化,但是不多
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,k;
    short a[1605][1605],b[1605][1605];
    char c[1005];
    void shun()
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                b[j][n+1-i]=a[i][j];
        swap(n,m);
        memcpy(a,b,sizeof b);
    }
    void ni()
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                b[m+1-j][i]=a[i][j];
        swap(n,m);
        memcpy(a,b,sizeof b);
    }
    void shui_ping()
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                b[i][m+1-j]=a[i][j];
        memcpy(a,b,sizeof b);
    }
    void chui_zhi()
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                b[n+1-i][j]=a[i][j];
        memcpy(a,b,sizeof b);
    }
    int main()
    {
        cin>>n>>m>>k;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                cin>>a[i][j];
        for(int i=1;i<=k;i++)
            cin>>c[i];
        bool ok=true;
        while(ok)
        {
            ok=false;
            for(int i=1;i<=k;i++)
            {
                if(c[i]=='A'&&c[i+1]=='B')
                {
                    for(int j=i;j<=k;j++)
                        c[j]=c[j+2];
                    k-=2;ok=true;
                }
                else if(c[i]=='B'&&c[i+1]=='A')
                {
                    for(int j=i;j<=k;j++)
                        c[j]=c[j+2];
                    k-=2;ok=true;
                }
                else if(c[i]=='C'&&c[i+1]=='C')
                {
                    for(int j=i;j<=k;j++)
                        c[j]=c[j+2];
                    k-=2;ok=true;
                }
                else if(c[i]=='D'&&c[i+1]=='D')
                {
                    for(int j=i;j<=k;j++)
                        c[j]=c[j+2];
                    k-=2;ok=true;
                }
                else if(c[i]=='A'&&c[i+1]=='A'&&c[i+3]=='A'&&c[i+4]=='A')
                {
                    for(int j=i;j<=k;j++)
                        c[j]=c[j+4];
                    k-=4;ok=true;
                }
                else if(c[i]=='B'&&c[i+1]=='B'&&c[i+3]=='B'&&c[i+4]=='B')
                {
                    for(int j=i;j<=k;j++)
                        c[j]=c[j+4];
                    k-=4;ok=true;
                }
            }
        }
        for(int i=1;i<=k;i++)
        {
            switch(c[i])
            {
                case 'A':shun();break;
                case 'B':ni();break;
                case 'C':shui_ping();break;
                case 'D':chui_zhi();break;
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
                cout<<a[i][j]<<' ';
            cout<<endl;
        }
        return 0;
    }
    
  • 1

信息

ID
1934
难度
9
分类
(无)
标签
递交数
134
已通过
1
通过率
1%
被复制
2
上传者