ZOJ 1259 Rails 代码及分析

ZOJ 1259 事实证明,STL是要超时的

#include <stdio.h>
int main()
{
 int Station[1001],In[1000];
 bool bk,end;
 int n,i,rer;
 int *ptrS,*ptrI;
 while(scanf("%d",&n))
 {
  if(n==0)
   break;
  while(1)
  {
   bk = false;
   for(i=0;i<n;++i)
   {
    scanf("%d",&In[i]);
    if(In[i]==0)
    {
     bk = true;
     break;
    }
   }
   if(bk == true)
    break;
   rer = 1;
   end = false;
   ptrS = Station;
   ptrI = In;
   *ptrS  = 0;
   for(i=0;i<n;++i)
   {
    if(In[i]==rer)
     rer++;
    else
    {
     if(In[i]==*ptrS)
     {
      --ptrS;
     }
     else if(In[i]>rer)
     {
      while(rer<In[i])
      {
       ptrS++;
       *ptrS = rer;
       ++rer;
      }
      ++rer;
     }
     else
     {
      end = true;
      break;
     }
    }
   }
   if(end==true)
    printf("No\n");
   else
    printf("Yes\n");
  }
  printf("\n");
 }
 return 0;
}

此题应为标准的堆栈问题
本人于昨天开始考虑,鉴于是一个ZOJ近400AC量的弱,采用了STL STACK……无数次失败后查看了网上下的代码,发现与本人思路接近,于是采用类似的数组做法(大量指称操作,那人是个变态)0.08s ac

关键要有一个变量rer
用STL的模版栈可以很快编出代码,但是……超时
首先初始化栈Station和变量rer(Station.push(0),(未完)
posted on 2006-09-16 15:34  AnewR  阅读(954)  评论(1)    收藏  举报