1 条题解

  • 0
    @ 2024-12-22 11:04:05

    C :

    #include"stdio.h"
    #include"string.h"
    struct erbi
    {
        float l;
        char w;
    }s[10001];
    int main()
    {
        int m,g=1;
        scanf("%d",&m);
        while(m--)
        {
            int len,t,n;
            scanf("%d%d%d",&len,&t,&n);
            int i,j,k;
            for(i=0;i<n;i++)
                scanf("%f %c",&s[i].l,&s[i].w);
            for(j=1;j<=t*2;j++)
            {
                for(i=0;i<n;i++)
                {
                    if(s[i].w=='R')
                        s[i].l+=0.5;
                    else s[i].l-=0.5;
                }
                for(i=0;i<n;i++)
                {
                    for(k=0;k<n;k++)
                    {
                        if(i==k)
                            continue;
                        if(s[i].l==s[k].l)
                            {
                                if(s[i].w=='R')
                                    s[i].w='L';
                                else
                                    s[i].w='R';
                            }
                    }
                }
            }
            printf("Case #%d:\n",g++);
            for(i=0;i<n;i++)
            {
                int flage=1;
                if(s[i].l<0||s[i].l>10)
                    printf("Fell off\n");
                else
            {
                for(j=0;j<n;j++)
                   {
                       if(i==j)
                        continue;
                    if(s[i].l==s[j].l)
                    {
                        printf("%.0f Turning\n",s[i].l);
                        flage=0;
                        break;
                    }
                   }
                   if(flage)
                    printf("%.0f %c\n",s[i].l,s[i].w);
                }
            }
        }
        return 0;
    }
    

    C++ :

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    
    const int maxn = 10000+5;
    const char dirName[][10]={"L","Turning","R"};
    int order[maxn];//输入的第i只蚂蚁是最终状态下从左往右第order[i];
    
    struct Ant
    {
        int id;//输入顺序
        int p;//位置
        int d;//朝向,-1:左,0:转身,1:右
        bool operator < (const Ant&a) const
        {
            return p<a.p;
        }
    }before[maxn],after[maxn];
    
    int main()
    {
        int tcase,L,T,n;
        scanf("%d",&tcase);
        int caseID=tcase;
        while(tcase--)
        {
            scanf("%d%d%d",&L,&T,&n);
            for(int i=0;i<n;i++)
            {
                int p,d;
                char c;
                scanf("%d %c",&p,&c);
                d=(c=='L'?-1:1);
                before[i]=(Ant){i,p,d};
                after[i]=(Ant){0,p+T*d,d};
            }
            sort(before,before+n);
            for(int i=0;i<n;i++)
                order[before[i].id]=i;
            sort(after,after+n);
            for(int i=0;i<n-1;i++)
                if(after[i].p==after[i+1].p)
                    after[i].d=after[i+1].d=0;
            printf("Case #%d:\n",caseID-tcase);
            for(int i=0;i<n;i++)
            {
                int a=order[i];
                if(after[a].p<0||after[a].p>L)
                    printf("Fell off\n");
                else
                    printf("%d %s\n",after[a].p,dirName[after[a].d+1]);
            }
        }
        return 0;
    }
    
    • 1

    信息

    ID
    361
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者