萌新求助40分
查看原帖
萌新求助40分
329698
youdu666楼主2022/9/1 22:12

随便造的数据都过去了,查不出错,请大佬帮帮我(若为脑残问题请轻喷)

#include<cstdio>
#include<bitset>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<string>
#include<map>
#include<iostream>
#define int long long
using namespace std;

inline int read()
{
    int x=0,y=1;
    char c=getchar();
    while(c>'9'||c<'0')
    {
        if(c=='-')
        y=-1;
        c=getchar();
    }
    while(c<='9'&&c>='0')
    {
        x=(x<<3)+(x<<1)+(c^48);
        c=getchar();
    }
    return x*y;
}
int mnx,mny,mxx,mxy,go[505];
int x[5],y[5],wy;//0:N  1:E  2:S  3:W
string a;
inline int pd(char a,char b)
{
    if(a=='F'&&b=='L')
        return 1;
    if(a=='F'&&b=='R')
        return 2;
    if(a=='R'&&b=='L')
        return 3;
    return 4;
}
inline void gx(int i)
{
    mnx=min(mnx,x[i]);
    mxx=max(mxx,x[i]);
    mny=min(mny,y[i]);
    mxy=max(mxy,y[i]);
}
inline void ck(void)
{
    for(int i=1;i<=4;i++)
        for(int j=1;j<=4;j++)
            if(i!=j)
                if(x[i]==x[j]&&y[i]==y[j])
                {
                    printf("%d\n",-1);
                    exit(0);
                }
}
signed main()
{
    // freopen("bi.txt","w",stdout);
    go['F']=0,go['B']=1,go['R']=2,go['L']=3,go['P']=4;
    x[1]=1,y[1]=1;
    x[2]=1,y[2]=2;
    x[3]=2,y[3]=1;
    x[4]=2,y[4]=2;
    mnx=mny=1;
    mxx=mxy=2;
    int T=read();
    // printf("\n");
    //     for(int i=1;i<=10;i++,printf("\n"))
    //         for(int j=1;j<=10;j++)
    //         {
    //             bool npt=false;
    //             for(int k=1;k<=4;k++)
    //                 if(x[k]+5==i&&y[k]+5==j)
    //                 {
    //                     printf("%d",k);
    //                     npt=true;
    //                 }
    //             if(!npt)
    //                 printf(" ");
    //             printf(" ");
    //         }
    while(T--)
    {
        cin>>a;
        int ft=pd(a[0],a[1]),hw=go[a[2]];
        if(hw==4)
        {
            for(int i=1;i<=4;i++)
            if(i!=ft)
            {
                int tx=y[ft]-y[i],ty=x[ft]-x[i];
                x[i]=x[ft]-tx;
                y[i]=y[ft]+ty;
                gx(i);
            }
            wy=(wy+1)%4;
        }
        else
        {
            switch(hw)
            {
                case 0:
                    switch(wy)
                    {
                        case 0:x[ft]-=1;break;
                        case 1:y[ft]+=1;break;
                        case 2:x[ft]+=1;break;
                        case 3:y[ft]-=1;break;
                    }
                    break;
                case 1:
                    switch(wy)
                    {
                        case 0:x[ft]+=1;break;
                        case 1:y[ft]-=1;break;
                        case 2:x[ft]-=1;break;
                        case 3:y[ft]+=1;break;
                    }
                    break;
                case 2:
                    switch(wy)
                    {
                        case 0:y[ft]+=1;break;
                        case 1:x[ft]-=1;break;
                        case 2:y[ft]-=1;break;
                        case 3:x[ft]+=1;break;
                    }
                    break;
                case 3:
                    switch(wy)
                    {
                        case 0:y[ft]-=1;break;
                        case 1:x[ft]+=1;break;
                        case 2:y[ft]+=1;break;
                        case 3:x[ft]-=1;break;
                    }
                    break;
            }
            gx(ft);
        }
        ck();
        // printf("\n");
        // for(int i=1;i<=10;i++,printf("\n"))
        //     for(int j=1;j<=10;j++)
        //     {
        //         bool npt=false;
        //         for(int k=1;k<=4;k++)
        //             if(x[k]+5==i&&y[k]+5==j)
        //             {
        //                 printf("%d",k);
        //                 npt=true;
        //             }
        //         if(!npt)
        //             printf(" ");
        //         printf(" ");
        //     }
    }
    printf("%lld\n",(mxx-mnx+1)*(mxy-mny+1));
}
/*
6
FRF
FRP
FLP
RRP
RLP
RRP
*/
2022/9/1 22:12
加载中...