F - ACboy needs your help again! (模拟)
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! (模拟)的更多相关文章
- 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 ...
- Vjudge - F - 比前面更简单的模拟
2017-07-16 07:31:35 writer:pprp 题目介绍:很基础的string用法 题目如下: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字 ...
- 浅谈Javascript事件模拟
事件是用来描述网页中某一特定有趣时刻的,众所周知事件通常是在由用户和浏览器进行交互时触发,其实不然,通过Javascript可以在任何时间触发特定的事件,并且这些事件与浏览器创建的事件是相同的.这就意 ...
- python 反人类函数式编程模拟while和if控制流
比如下面这个简单明了的命令式程序,它不断捕捉用户输入的内容,然后对其求和.直到用户输入一个以'0'开头的字符串,停止捕捉. while 1: line = input() ': print(sum(m ...
- 模拟登陆,selenium,线程池
一 . 模拟登陆案例(识别验证码) 1 . 打码平台 - 云打码 : www.yundama.com 使用步骤 : - 注册两个账户,普通用户和开发者用户 : - 登陆 普通用户查看余额 登陆开发 ...
- 湖南省第八届大学生计算机程序设计竞赛(A,B,C,E,F,I,J)
A 三家人 Description 有三户人家共拥有一座花园,每户人家的太太均需帮忙整理花园.A 太太工作了5 天,B 太太则工作了4 天,才将花园整理完毕.C 太太因为正身怀六甲无法加入她们的行列, ...
- awk 常用选项及数组的用法和模拟生产环境数据统计
awk 常用选项总结 在 awk 中使用外部的环境变量 (-v) awk -v num2="$num1" -v var1="$var" 'BEGIN{print ...
- H-Updating a Dictionary (模拟)
In this problem, a dictionary is collection of key-value pairs, where keys are lower-case letters, a ...
- C#接口显示实现在实际开发中的作用
摘要 任何一个C#入门的程序员都知道——当一个类型在实现接口的时候,有两种方法实现:显式实现.隐式实现.而且大家也都知道,当一个类型实现的两个接口存在相同成员定义时,显示实现可以解决这种情况. 但是, ...
随机推荐
- Playbooks 中的错误处理
Topics Playbooks 中的错误处理 忽略错误的命令 控制对失败的定义 覆写更改结果 Ansible 通常默认会确保检测模块和命令的返回码并且会快速失败 – 专注于一个错误除非你另作打算. ...
- 查询cad库中,所有程序leg引用的点的id,需要预先处理点表和程序表
select f1.pro_id,f1.pro_type, f1.code_fix_point, f1.code_type_fix_point, f1.code_fir,f2.code_icao,nv ...
- sourceTree免密码校验
1.ssh请求:参考:http://www.ithao123.cn/content-1584888.html 步骤1:检查你的电脑上是否已经生成了SSH Key 在git bash下执行如下命令 cd ...
- Python 小练习二 数据库MySQL、Redis
import pymysql,redis def op_mysql(host,user,password,db,sql,port=3306,charset='utf8'): conn = pymysq ...
- codeforce453DIV2——D. GCD of Polynomials
题意 给出n(1–150). 输出两个多项式A,B从常数到最高次的系数,使得对两个多项式求gcd时,恰好经过n步得到结果. 多项式的gcd一步是指(A(x),B(x))变成(B,A mod B)的过程 ...
- 张超超OC基础回顾04_实例变量修饰(@public),点语法,self关键字,多态,继承
零.实例变量修饰符 /* @public 就是实例变量修饰符 @public >可以在其它类中访问被public修饰的成员变量 >也可以在本类中访问被public修饰的成员变量 >可 ...
- SpringCloud02 Eureka知识点、Eureka服务端和客户端的创建、Eureka服务端集群、Eureka客户端向集群的Eureka服务端注册
1 Eureka知识点 按照功能划分: Eureka由Eureka服务端和Eureka客户端组成 按照角色划分: Eureka由Eureka Server.Service Provider.Servi ...
- 卡2-SLAM
---恢复内容开始--- 1.下载 首先需要从github上Git以下两个包: git clonehttps://github.com/ros-perception/open_karto(开源的kar ...
- hdu 4681 String(转载)
#include <stdio.h> #include <string.h> #include <algorithm> #include <iostream& ...
- html5操作类名API——classlist
tagNode.classList.add('123'); // 添加类 tagNode.classList.remove('bbb'); // 删除类 tagNode.classList.toggl ...