weixin_64417453 2022-09-06 09:05 采纳率: 66.7%
浏览 82
已结题

为什么这么写会超时呀?

**男儿何不带吴钩,收取灯塔五十州。

沙场秋点兵:

刘成将军正在排兵布阵,他要将若干个士兵拍成一排,每个士兵都有一个战斗值x,不同士兵的战斗值可能相同。

假设初始时,队伍为空,但是队伍的正方向朝东(若队伍中有士兵,则他们面朝东,即东边是队伍队首,西边是队伍队尾)

刘成将军会发布以下三条命令:

命令一名士兵从队尾插入队伍

命令一名士兵从队首离开队伍(若队伍里面没有士兵,则忽略此操作)

命令队伍向后转(队伍的正方向改变,队首变为队尾,队尾变为队首。)

输入格式:
第一行一个正整数q(1<=q<=400000),表示命令的数量

接下来q行,

若是 1 x,则将一个战斗值为x的士兵从队尾插入队伍(1<=x<=1000000)。

若是 2,则命令一名士兵从队首离开队伍(若当前队伍中没有士兵,则忽略此操作)

若是 3,则命令队伍向后转

输出格式:
对于每个输入输出一行一个整数,为当前队首和队尾两名士兵的战斗值的异或值(这里的异或是按位异或,运算符为 '^')。

若当前队伍为空,则输出-1**

#include<stdio.h>
int main()
{
    int a[400000]={0};
    int i,j,k,q,m,n,x,s;
    int t=-1;
    scanf("%d",&q);
    for(i=0;i<q;i++){
        scanf("%d",&m);
        if(m==1){    
            scanf("%d",&n);
            t++;                             
            for(j=q-1;j>0;j--)
                 a[j-1]=a[j];
            a[q-1]=n; 
            if(a[q-1]==a[q-1-t])x=0;    
            else x=1;
            printf("%d\n",x);
        }
        else if(m==2){
            t--;
            if(t<0)printf("-1\n");
            else{
                if(a[q-1]==a[q-1-t])x=0;    
                else x=1;
                printf("%d\n",x);
            }
        }
        else if(m==3){
            for(j=0;j<=(t+1)/2;j++){
                s=a[q-1-t];
                a[q-1-t]=a[q-1-j];
                a[q-1-j]=s; 
            }
            if(a[q-1]==a[q-1-t])x=0;    
            else x=1;
            printf("%d\n",x);
        }
    }
}

  • 写回答

1条回答 默认 最新

  • 於黾 2022-09-06 09:23
    关注

    向后转的时候你不要真的把整个数组倒转,那多消耗时间啊
    你只需要判断队伍到底朝向哪边
    如果朝正方向,那么从队尾进入,队首离开;
    如果朝反反向,那么从队首进入,从队尾离开

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 创建了问题 9月6日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?