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#入门的程序员都知道——当一个类型在实现接口的时候,有两种方法实现:显式实现.隐式实现.而且大家也都知道,当一个类型实现的两个接口存在相同成员定义时,显示实现可以解决这种情况. 但是, ...
随机推荐
- Angular2快速入门-1.创建第一个app
一.环境搭建 Angular2 运行在nodejs 环境下,需要我们先创建好nodejs环境,具体操作 1.下载安装Nodejs,参考网址,https://nodejs.org/en/ 选择64位 ...
- 缓存 memcached 与 redis
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- Linux性能监测:CPU篇
CPU 也是一种硬件资源,和任何其他硬件设备一样也需要驱动和管理程序才能使用,我们可以把内核的进程调度看作是 CPU 的管理程序,用来管理和分配 CPU 资源,合理安排进程抢占 CPU,并决定哪个进程 ...
- DEV CheckComboboxEdit、CheckedListBoxControl(转)
CheckComboboxEdit //先清空所有,若在窗体Load事件中,也可以不清空 //cbRWYs.Properties.Items.Clear(); var RwyList = tspro. ...
- 前端自动化之webstrom
前端自动化之webstrom 在刚接触前端的时候,使用的就一直是webstrom,版本是webstrom 8. 前端自动画使用的时候,因为webstrom 8版本是没有集成gulp的.所以每次使用都默 ...
- 【知识结构】最强Web认证知识体系
花了些时间总结了下Web认证,以及各种方式的利弊和使用,后续后继续更新.文章转载请注明出处:https://www.cnblogs.com/pengdai/p/9144843.html -----20 ...
- sklearn 中 make_blobs模块
# 生成用于聚类的各向同性高斯blobsklearn.datasets.make_blobs(n_samples = 100,n_features = 2,center = 3,cluster_std ...
- Clean小程序(控件消息)
一 . 准备工作 创建一个基于对话框的MFC项目 删除对话框上的工具 二 . 实现将seven图片贴到上面,按一下则换一张图片 1.在资源视图中添加位图资源,通过属性修改图片ID 2.将对话框拉长,防 ...
- JAVA 微信开发
公司最近要搭建一个java的微信系统,感觉自己没有记录的很多所以从今天开始每天开始更新一遍java的微信文章记录. 如有兴趣的可以加入群463676190,一起交流交流
- quilljs 一款简单轻量的富文本编辑器(适合移动端)
quilljs入门使用教程: quill.js是一款强大的现代富文本编辑器插件.该富文本编辑器插件支持所有的现代浏览器.平板电脑和手机.它提供了文本编辑器的所有功能,并为开发者提供大量的配置参数和方法 ...