题解:P14325 [JOI2022 预选赛 R2] 图书馆 2 / Library 2

· · 题解

P14325 题解

题目传送门 P14325

前置芝士

可简单理解为 后进先出,即 新状态优先

使用方法

STL中有这么一个头文件——

#include <stack>

那么要怎么用呢?

//以string类型为例
stack<string> stk;
//入栈操作
stk.push("Luogu");
//获取栈顶元素
stk.top();
//栈顶元素爪巴
stk.pop();

没了:)

题意理解

Q次由字符串S_i表示的两种操作

  1. S_i全为小写字母,则将其堆叠在最上方
  2. S_iREAD,则阅读位于最上方的书并归还

    思路分析

    既然是最上方,那么我们可以维护一个,则两种操作可转化为

思路有了,上代码:)

CODE

#include <iostream>
#include <stack>
using namespace std;
int q;//操作数量
stack<string> stk;//核心:栈
int main(){
    cin >> q;
    while(q--){
        string s;
        cin >> s;
        //若不为READ 则入栈
        //若为READ 则输出栈顶并出栈
        if(s!="READ") stk.push(s);
        else cout << stk.top() << endl,stk.pop();
    }
    return 0;
}

一道欢乐的栈水题~