论程序的阿卡林化

本题运用双端队列+栈数据结构可以解决
首先建立一个双端队列  其实可以建立一个循环队列以节省空间,只是此题空间消耗不大,于是乎我就开了2倍空间
然后建立一个顺序栈  还有一个存放初始书籍的队列   设置一个bool变量用来显示 是否已经反转 (即双端队列是从
头存取还是尾部存取)
因为书籍的初始读入序列是自上往下的,因此在读入之后,逆序存入相应的队列 和 栈 中  
初始 flag = true  队列尾部插入  (同时要判断队列中的数量是否等于k 如果等于的话 头部元素出队进入栈中 元素仍然尾部进队)
反转 flag = false 队列头部入队  (同时判断队列中数量是否等于k      如果等于的话 尾部元素进入栈中   元素仍然头部入队)
在求取队列元素长度的时候  起初是y-x+1 未注意 队列尾部指针是空 wa了  改为 y-x  AC
在所有操作完成之后  输出元素 首先输出 队列中的元素 按照flag的true or false 输出队列中的元素(true表明队尾元素在顶端先输出false)
然后在栈中 自上而下输出元素 
在判断操作是添加还是反转的时候 用一个字符串存储输入 判断首字母确定操作  得到书名
时间复杂度O(n)级别

#include<cstdio>
#define LEN(x,y) (y-x) //此时的rear已经是向后一位逇
#define MAX 40005
struct node
{char s[5];
};
int n,m,k;
bool flag = true;
node y[MAX];struct Queue
{int front;int rear;node date[MAX*2];
};
Queue Q;struct Stack
{int top;node date[MAX];
};
Stack S;Queue createQueue()
{Q.front =40000;Q.rear = 40000;return Q;
}Stack createStack()
{S.top = 0;return S;
}void add(node x)
{int len = LEN(Q.front,Q.rear);if(flag){if(len==k){  S.date[S.top++] = Q.date[Q.front];Q.front++;}Q.date[Q.rear++] = x;}else{if(len==k){S.date[S.top++] = Q.date[Q.rear-1];Q.rear--;}Q.front--;Q.date[Q.front] = x;}
}void reverse()
{flag = !flag;
}bool isReverse(node &x)
{char tp[20]; scanf("%s", tp);if(tp[0]=='R') return true;int i;for(i=4;tp[i]!=')';i++)x.s[i-4] = tp[i];x.s[i-4]='\0';return false;
}
void deal()
{if(flag){while(Q.front != Q.rear){S.date[S.top++] = Q.date[Q.front];Q.front++;}}else{      while(Q.front != Q.rear){S.date[S.top++] = Q.date[Q.rear-1];Q.rear--;}}
}
int main()
{//freopen("1.txt","r",stdin);while(scanf("%d%d%d",&n,&m,&k)==3){int i;node x;createQueue();createStack();for(i =0;i<n;i++)scanf("%s",y[i].s);for(i=n-1;i>=0;i--)  //保证后来的书在上面add(y[i]);for(i=0;i<m;i++){if(isReverse(x))reverse();else add(x);}deal();while(S.top>0){printf("%s\n",S.date[--S.top].s);}printf("\n");}return 0;
}

uestc oj 1831 论程序的阿卡林化相关推荐

  1. OJ问题检测程序---python开发

    懒人总是想方设法使自己更懒,特别是学计算机的孩纸. 问题来源很简单,OJ评测程序有点问题,有时候不知到怎么回事就waiting了,一但waiting后面所有提交的代码就都waiting了, OJ就不能 ...

  2. [C++] OJ造数据程序

    目录 前言 一.造数据程序 总结 前言 在OJ中,我们常常需要给题目造数据.遇到一些复杂的题目,数据往往很难造,因此我们需要程序的力量!接下来就给大家分享一个超赞的干货! 转载请标明出处,别忘了动动你 ...

  3. uestc oj 1218 Pick The Sticks (01背包变形)

    题目链接:http://acm.uestc.edu.cn/#/problem/show/1218 给出n根木棒的长度和价值,最多可以装在一个长 l 的容器中,相邻木棒之间不允许重叠,且两边上的木棒,可 ...

  4. 江城子·oj出错(程序员之歌)

    十年生死两茫茫,写程序,到天亮. 千行代码,Bug何处藏. 纵使上线又怎样,朝令改,夕断肠. 领导每天新想法,天天改,日日忙. 相顾无言,惟有泪千行. 每晚灯火阑珊处,又加班,工作狂.

  5. [动态规划] uestc oj A - 男神的礼物

    A - 男神的礼物 Time Limit: 3000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Lweb学长 ...

  6. UESTC oj 758 P酱的冒险旅途

    P酱的冒险旅途 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  7. uestc oj 1827 种蘑菇的魔理沙

    种蘑菇的魔理沙 这一题与A Simple Problem with Integers 题目很像   这一题是更新区间查询区间最大值 那一题是更新区间查询区间和 原理类似  线段树+懒操作 首先建树 树 ...

  8. uestc oj 1002 解救小Q

    解救小Q Description 小Q被邪恶的大魔王困在了迷宫里,love8909决定去解救她. 迷宫里面有一些陷阱,一旦走到陷阱里,就会被困身亡:(,迷宫 里还有一些古老的传送阵,一旦走到传送阵上, ...

  9. 写给不想做OJ题的C++学习者

    [来信] 老师: 您好,我看了您的很多博客内容,想请教您一些问题. 以前自己跟着学校老师过过一遍基础的C++(谭浩强的书),现在打算自己好好的学C++,目前我也在看<C++ primer> ...

最新文章

  1. mysql三表查询数据重复_解决mybatis三表连接查询数据重复的问题
  2. 南方科技大学环境学院夏雨教授博士后一名(环境微生物方向)
  3. linux页面置换的存储,3.4.4 第二次机会页面置换算法
  4. js操作cookie的函数
  5. C++ 覆盖方法、重载方法的理解
  6. CIKM 2021 | BH:面向Web级应用的基于二进制码的Hash Embedding
  7. pyinstaller运行时出现TCLError的错误该怎么办?
  8. Scala程序将字符串转换为整数
  9. selenium (二)
  10. [RK3399][Android7.1] ADB功能怎么Debug
  11. 郑州大学计算机翟雨轩,郑州大学文件-20210331220732.doc-原创力文档
  12. 我国主要城市2023年房价数据
  13. 《四世同堂》金句摘抄(十)
  14. 必应搜索引擎关键词网站采集URL域名工具国际版英文网址
  15. 递归函数——上台阶问题
  16. [写Bug记录] Maven出现 Library xxx has broken classes paths
  17. linux系统找不到网卡配置文件,Linux系统Centos没有网卡eth0配置文件的解决方法
  18. Java 实现文件拷贝粘贴
  19. 餐饮小程序系统开发|小程序对餐饮行业商家有什么优势?
  20. 【精确延时函数】IAR(MSP430)中的精确延时函数

热门文章

  1. PHP设置文本框背景透明度,话说半透明文本框!(不透明度可以任意调节,可以实现全透明)...
  2. 3G门户手机浏览器试用感受
  3. 设置允许从网络访问计算机的用户账户(加入guest组),网络共享
  4. 最实用的Word快捷键大全
  5. 如何查看Win11的CUDA版本
  6. 时间序列压缩算法及其应用
  7. 2020最值得读的java书,2020年最值得读的10本书,你看过几本?
  8. 我们走访了十几家美国企业服务公司,写下了这篇万字长文
  9. 计算机中丢失tcalc,【图】通达信指标公式全部丢失,怎样能找回来_炒股软件,炒股,炒股公式,股票指标,股票软件_股票软件技术交流论坛_理想论坛 - 股票论坛...
  10. 网易云音乐再成功融资!2018年成数字音乐资本大年