2021杭电多校第七场题解


读错题导致卡了2h,然后才发现走的路径是固定的。

于是这就是签到题

#include
using namespace std;
int n,x,y,d,tx[4]={0,1,0,-1},ty[4]={1,0,-1,0},dc[4]={1,2,3,0},du[4]={3,0,1,2};
int main()
{
    int T;scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d%d",&x,&y,&d);
        scanf("%d",&n);
        while(n--)
        {
            int nx,ny,dx,dy;scanf("%d%d",&nx,&ny);
            dx=nx-x,dy=ny-y;
            if(tx[d])
            {
                if(dx/tx[d]>=0)
                {
                    for(int i=1;i<=abs(dx);i++)printf("f");
                    if(dy)
                    {
                        if(dy/ty[dc[d]]>0)d=dc[d],printf("c");
                        else d=du[d],printf("u");
                        for(int i=1;i<=abs(dy);i++)printf("f");
                    }
                }
                else{
                    if(dy/ty[dc[d]]>0)d=dc[d],printf("c");
                    else d=du[d],printf("u");
                    for(int i=1;i<=abs(dy);i++)printf("f");
                    if(dx/tx[dc[d]]>0)d=dc[d],printf("c");
                    else d=du[d],printf("u");
                    for(int i=1;i<=abs(dx);i++)printf("f");
                }
            }
            else if(dy/ty[d]>=0)
            {
                for(int i=1;i<=abs(dy);i++)printf("f");
                if(dx)
                {
                    if(dx/tx[dc[d]]>0)d=dc[d],printf("c");
                    else d=du[d],printf("u");
                    for(int i=1;i<=abs(dx);i++)printf("f");
                }
            }
            else{
                if(dx/tx[dc[d]]>0)d=dc[d],printf("c");
                else d=du[d],printf("u");
                for(int i=1;i<=abs(dx);i++)printf("f");
                if(dy/ty[dc[d]]>0)d=dc[d],printf("c");
                else d=du[d],printf("u");
                for(int i=1;i<=abs(dy);i++)printf("f");
            }
            x=nx,y=ny;
        }
        puts("");
    }
}

持续更新中……