ACboy was kidnapped!! 
he miss his mother very much and is very scare now.You can't image how dark the room he was put into is, so poor :(. 
As a smart ACMer, you want to get ACboy out of the monster's labyrinth.But when you arrive at the gate of the maze, the monste say :" I have heard that you are very clever, but if can't solve my problems, you will die with ACboy." 
The problems of the monster is shown on the wall: 
Each problem's first line is a integer N(the number of commands), and a word "FIFO" or "FILO".(you are very happy because you know "FIFO" stands for "First In First Out", and "FILO" means "First In Last Out"). 
and the following N lines, each line is "IN M" or "OUT", (M represent a integer). 
and the answer of a problem is a passowrd of a door, so if you want to rescue ACboy, answer the problem carefully!

InputThe input contains multiple test cases. 
The first line has one integer,represent the number oftest cases. 
And the input of each subproblem are described above.OutputFor each command "OUT", you should output a integer depend on the word is "FIFO" or "FILO", or a word "None" if you don't have any integer.Sample Input

4
4 FIFO
IN 1
IN 2
OUT
OUT
4 FILO
IN 1
IN 2
OUT
OUT
5 FIFO
IN 1
IN 2
OUT
OUT
OUT
5 FILO
IN 1
IN 2
OUT
IN 3
OUT

Sample Output

1
2
2
1
1
2
None
2
3

题意讲的很清楚,就是用栈和队列来模拟,但是提交的时候WA了两次,后来才发现当进入过一组数据后,要把栈和队列清空

AC代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<queue>
const int maxn = ; using namespace std; int main()
{
stack<int> sT;
queue<int> que; int t, num;
char xx[];
char s1[] = "IN", s2[] = "OUT";
char s3[] = "FIFO", s4[] = "FILO"; scanf("%d", &t); while(t--)
{
int n;
char str[]; scanf("%d %s", &n, &str); if(strcmp(str, s3) == )
{
for(int i = ; i < n; i++)
{
scanf("%s", &xx); if(strcmp(xx, s1) == )
{
scanf("%d", &num);
que.push(num);
} if(strcmp(xx, s2) == )
{
if(que.empty())
{
printf("None\n");
} else
{
printf("%d\n", que.front());
que.pop();
}
}
} while(!que.empty())
que.pop();
} if(strcmp(str, s4) == )
{
for(int i = ; i < n; i++)
{
scanf("%s", &xx); if(strcmp(xx, s1) == )
{
scanf("%d", &num);
sT.push(num);
} if(strcmp(xx, s2) == )
{
if(sT.empty())
{
printf("None\n");
}
else
{
printf("%d\n", sT.top());
sT.pop();
}
}
} while(!sT.empty())
sT.pop();
}
}
return ;
}

在网上找了一些其他人的代码,发现也有人用vector来解题,也要学习一下

/*
题意:这个东西总共两种模式:栈和队列,然后模拟 解体思路:既然是模拟,就没什么搞得了。开搞 */
#include<bits/stdc++.h>
using namespace std;
int t,n;
int a;
string op,name;
vector<int>v;
void init(){
v.clear();
}
int main(){
//freopen("in.txt","r",stdin);
scanf("%d",&t);
while(t--){
scanf("%d",&n);
cin>>name;
init();
if(name=="FIFO"){//先进先出
for(int i=;i<n;i++){
cin>>op;
if(op=="IN"){//进入
scanf("%d",&a);
v.push_back(a);
}else{//出
if(v.size()==){
printf("None\n");
}else{
printf("%d\n",v[]);
v.erase(v.begin());
}
}
}
}else{//先进后出
for(int i=;i<n;i++){
cin>>op;
if(op=="IN"){//进入
scanf("%d",&a);
v.push_back(a);
}else{//出
if(v.size()==){
printf("None\n");
}else{
printf("%d\n",v[v.size()-]);
v.erase(v.end()-);
}
}
}
}
}
return ;
}

F - ACboy needs your help again! (模拟)的更多相关文章

  1. Codeforces 1131 F. Asya And Kittens-双向链表(模拟或者STL list)+并查集(或者STL list的splice()函数)-对不起,我太菜了。。。 (Codeforces Round #541 (Div. 2))

    F. Asya And Kittens time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  2. Vjudge - F - 比前面更简单的模拟

    2017-07-16 07:31:35 writer:pprp 题目介绍:很基础的string用法 题目如下: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字 ...

  3. 浅谈Javascript事件模拟

    事件是用来描述网页中某一特定有趣时刻的,众所周知事件通常是在由用户和浏览器进行交互时触发,其实不然,通过Javascript可以在任何时间触发特定的事件,并且这些事件与浏览器创建的事件是相同的.这就意 ...

  4. python 反人类函数式编程模拟while和if控制流

    比如下面这个简单明了的命令式程序,它不断捕捉用户输入的内容,然后对其求和.直到用户输入一个以'0'开头的字符串,停止捕捉. while 1: line = input() ': print(sum(m ...

  5. 模拟登陆,selenium,线程池

    一 . 模拟登陆案例(识别验证码)  1 . 打码平台 - 云打码 : www.yundama.com  使用步骤 : - 注册两个账户,普通用户和开发者用户 : - 登陆 普通用户查看余额 登陆开发 ...

  6. 湖南省第八届大学生计算机程序设计竞赛(A,B,C,E,F,I,J)

    A 三家人 Description 有三户人家共拥有一座花园,每户人家的太太均需帮忙整理花园.A 太太工作了5 天,B 太太则工作了4 天,才将花园整理完毕.C 太太因为正身怀六甲无法加入她们的行列, ...

  7. awk 常用选项及数组的用法和模拟生产环境数据统计

    awk 常用选项总结 在 awk 中使用外部的环境变量 (-v) awk -v num2="$num1" -v var1="$var" 'BEGIN{print ...

  8. H-Updating a Dictionary (模拟)

    In this problem, a dictionary is collection of key-value pairs, where keys are lower-case letters, a ...

  9. C#接口显示实现在实际开发中的作用

    摘要 任何一个C#入门的程序员都知道——当一个类型在实现接口的时候,有两种方法实现:显式实现.隐式实现.而且大家也都知道,当一个类型实现的两个接口存在相同成员定义时,显示实现可以解决这种情况. 但是, ...

随机推荐

  1. mybatis 学习一 建立maven项目

    一.直接建立Maven项目方法 1.建立Maven项目 接下来使用Eclipse的maven构建一个web项目,以构建SpringMVC项目为例: 1.1 选择建立Maven Project 选择Fi ...

  2. 谈谈contentWindow 和contentDocument以及 iframe

    1,contentWindow:是用来获取子窗口的window对象的,它兼容各大浏览器,用法如下 document.getElementById("iframeId").conte ...

  3. 使用Java进行远程方法调用的几个方案及比较

    Java远程方法调用是编程过程中比较常见的问题,列举一下主要包括如下几类: 1.Java RMI (Remote Method Invocation) 2.EJB远程接口调用 3.WebService ...

  4. 【整理】Android中的gravity和layout_gravity区别

    [背景] 在Android中,想要设置个按钮的水平对齐,都累死了: [已解决]ADT中已设置TableLayout布局的情况下如何设置按钮居中对齐    所以现在有必要搞清楚,到底gravity和la ...

  5. leetcode883

    int projectionArea(vector<vector<int>>& grid) { ; ; ; ; i < grid.size(); i++) { r ...

  6. UnityGUI Keynote

    [UnityGUI Keynote] 1.GUI.Label控件可以用来显示texture: 更通用的作法是用label来显式texture. 2.GUI.Button可以显示texture.stri ...

  7. lazyload is not a function解决方式

    使用jQuery图片延迟加载插件时,可能会报出$("img").lazyload is not a function的错误.(关于如何使用lazyload插件,请看另外一篇文章:j ...

  8. HTTP状态详解

    1**:请求收到,继续处理2**:操作成功收到,分析.接受3**:完成此请求必须进一步处理4**:请求包含一个错误语法或不能完成5**:服务器执行一个完全有效请求失败 100——客户必须继续发出请求1 ...

  9. Python父类调用子类

    首先说明,上面的标题其实是不正确的,Python是一门解释型.动态数据类型的高级语言,运行时,动态判断调用对象,其实还是子类自己在调用自己的方法或属性. 举个例子(copy过来的):SocketSer ...

  10. c++ deque 容器

    deque (全名 double ended queue)是一种具有队列和栈一样的数据结构. 在c++标准库中几乎和vector容器的接口完全相同,但它和vector 还是有一些细微的差别. 1. d ...