📅  最后修改于: 2023-12-03 14:40:08.092000             🧑  作者: Mango
本题是Codeforces一个编程竞赛的题目,名为博物馆之夜。题目描述如下:
你正在一个巨大的博物馆的夜晚展出,每个展厅里均有一件不同的艺术品,从1到n编号。你表现出对博物馆的极大兴趣,但是你只能看到编号为i的艺术品当你站在位置i上(即展厅i)。但是,你只能移动到比你当前所在展厅编号小的展厅。
在博物馆的夜晚,有m个事件会发生。每个事件是以下两种类型之一:
给定每个事件的描述,请输出每个查询事件的结果。
输入的第一行包含两个整数 n 和 m (1 <= n, m <= 100) - 博物馆展厅的数量和事件的数量。
接下来 m 行描述每个事件。每行包含一个字符串 s 和一个整数 k。如果 s = "2",则表示一个类型为 "2 x" 的事件,其中 x 是一个整数 (1 <= x <= n)。如果 s = "1",则表示一个查询事件。
对于每个查询事件,输出你当前所在展厅的艺术品编号。
输入:
5 7
2 2
1
2 3
2 1
1
2 4
1
输出:
2
2
4
我们需要模拟每个事件的发生,对于类型为 "2 x" 的事件,我们将当前位置移动到 x;对于类型为 "1" 的事件,我们输出当前位置的艺术品编号。
以下是一个使用 C++ 语言实现的示例代码片段:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> exhibit(n);
int currentRoom = 1;
for (int i = 0; i < m; i++) {
int eventType;
cin >> eventType;
if (eventType == 2) {
int room;
cin >> room;
currentRoom = room;
} else if (eventType == 1) {
cout << exhibit[currentRoom - 1] << endl;
}
}
return 0;
}
希望这个介绍对你有帮助!