博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SPOJ - ADAQUEUE ,双端队列简单运用!
阅读量:5089 次
发布时间:2019-06-13

本文共 1482 字,大约阅读时间需要 4 分钟。

ADAQUEUE - Ada and Queue

  表示这题是学弟带的榜,题还没看完,学弟吐了一句:这不就是双端队列嘛。于是掏出布满尘埃的《曾粽根ACM程序设计》,嗯,确实是裸题,现学现做。

  题意:若干操作,每次可以在队首加入元素,可以在队尾加入元素,也可以翻转整个序列,查询最前面的或者最后面的数。操作数10^6。

  除了翻转不用实际操作,其他的就是双端队列加入和删除操作了,若是翻转我们可以设置一个变量来表示状态,然后实时更新。

char s[N];int main(){    int Q;    while(~scanf("%d",&Q))    {        deque
q; int f=1,x,len=0; while(Q--) { scanf("%s",s); if(s[0]=='t') { scanf("%d",&x); if(f==1) q.push_front(x); else q.push_back(x); len++; } if(s[0]=='p') { scanf("%d",&x); if(f==1) q.push_back(x); else q.push_front(x); len++; } if(s[0]=='r') f^=1; if(s[0]=='b') { if(!len) puts("No job for Ada?"); else { if(f) printf("%d\n",q[len-1]),q.pop_back(); else printf("%d\n",q[0]),q.pop_front(); len--; } } if(s[0]=='f') { if(!len) puts("No job for Ada?"); else { if(f) printf("%d\n",q[0]),q.pop_front(); else printf("%d\n",q[len-1]),q.pop_back(); len--; } } } } return 0;}

   对双端队列有疑问可以参考我前一篇博客。

   往下拉

    再往下拉..

    哈哈,没有!

     

     怎么可能没有,前一篇博客嘛,当然是直接找上一篇咯。还傻傻的到这来。

  

          

转载于:https://www.cnblogs.com/nyist-TC-LYQ/p/7208076.html

你可能感兴趣的文章