洛谷原题

首先,观察题目。

仅能容纳一本书的宽度,但高度足够。

并将其堆叠在空间最上方。

阅读当前堆叠在空间最上方的书,然后将其归还图书馆。

可以看到,空间只能容纳一本书的宽度,且所有对空间的操作都是在最上方进行的。这两点和栈是一样的。因此,我们可以把这个空间看成一个栈,栈里存的是书名。

只要想到这里,用栈模拟就可以 AC 了。

需要注意的是,不一定所有的书都要被取出。题目给出的两个样例可以说明。

AC 记录

AC 代码

#include<bits/stdc++.h>
using namespace std;
stack<string> s;
int main(){
    int q;
    scanf("%d",&q);
    while(q--){
        string st;
        cin >> st;
        if(st=="READ"){
            cout << s.top() <<endl;//输出书名
            s.pop();//归还图书馆
        }else{
            s.push(st);//堆叠在空间最上方
        }
    }
    return 0;
}
posted on 2026-06-29 21:39  lz5332t  阅读(1)  评论(0)    收藏  举报