• 「题解」:砖块


    问题 A: 砖块

    时间限制: 1 Sec  内存限制: 256 MB

    题面


    题面谢绝公开。

    题解


    大模拟需要题解么??

    #include<bits/stdc++.h>
    #define rint register int
    using namespace std;
    int T,len,vis[1111][1111],ans;
    int l;//l表示长边在哪个方向,1表南北,2表东西,0表底面在下。
    int x,y;//左下角在网格中占据的坐标
    int h;//高度
    char ch[103];
    inline int Max(int A,int B){return A>B?A:B;}
    inline void North(){if(l==0){y+=1;l=1;}else if(l==1){y+=h;l=0;}else y+=1;}
    inline void South(){if(l==0){y-=h;l=1;}else if(l==1){y-=1;l=0;}else y-=1;}
    inline void East(){if(l==0){x+=1;l=2;}else if(l==1)x+=1;else{x+=h;l=0;}}
    inline void West(){if(l==0){x-=h;l=2;}else if(l==1)x-=1;else{x-=1;l=0;}}
    int main()
    {
    //    freopen("ex_block2.in","r",stdin);
    //    freopen("my.out","w",stdout);
        scanf("%d",&T);
        while(T--)
        {
            l=x=y=len=ans=0;
            memset(vis,0,sizeof(vis));
            scanf("%d %s",&h,ch+1);
            len=strlen(ch+1);vis[555][555]=1;
            for(rint i=1;i<=len;++i)
            {
                switch(ch[i])
                {
                    case 'N':{North();break;}
                    case 'S':{South();break;}
                    case 'E':{East(); break;}
                    case 'W':{West(); break;}
                }
                if(l==0)
                {
                    vis[x+555][y+555]++;
                    ans=Max(ans,vis[x+555][y+555]);
                }
                else if(l==1)
                {
                    for(rint i=0;i<h;++i)
                    {
                        vis[x+555][y+i+555]++;
                        ans=Max(ans,vis[x+555][y+i+555]);
                    }
                }
                else
                {
                    for(rint i=0;i<h;++i)
                    {
                        vis[x+i+555][y+555]++;
                        ans=Max(ans,vis[x+i+555][y+555]);
                    }
                }
            }
            if(l==0)
                printf("%d
    %d
    %d
    ",x,y,ans);
            else if(l==1)
            {
                for(rint i=0;i<h;++i)printf("%d ",x);puts("");
                for(rint i=0;i<h;++i)printf("%d ",y+i);puts("");
                printf("%d
    ",ans);
            }
            else 
            {
                for(rint i=0;i<h;++i)printf("%d ",x+i);puts("");
                for(rint i=0;i<h;++i)printf("%d ",y);puts("");
                printf("%d
    ",ans);
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    dubbo的防痴呆设计
    dubbo设计实现的健壮性
    Dubbo配置设计
    一些设计上的常识
    如何使用sqlalchemy获取某年某月的数据总和
    使用datatables实现后台分页功能,减轻前端渲染压力
    datatable使用介绍
    ssh远程执行nohup命令不退出
    ssh 执行多条命令包含awk的用法
    sys.argv的妙用:python命令行参数列表的修改、增加、删除
  • 原文地址:https://www.cnblogs.com/xingmi-weiyouni/p/11626416.html
Copyright © 2020-2023  润新知