题解:P14736 [ICPC 2021 Seoul R] Find the House

· · 题解

P14736 题解

思路

map 存储每个位置的移动指令,从起点开始,每次:

  1. 查找当前位置 (i, j, k) 指令
  2. 按方向 j 移动 k 个单位
  3. 删除该指令 重复 n 次后得到最终位置

代码


#include <bits/stdc++.h>
using namespace std;

int main() {
    int n; cin >> n;
    map<int, pair<char, int>> m;

    for(int i = 0; i < n; i++) {
        int p, k; char d;
        cin >> p >> d >> k;
        m[p] = {d, k};
    }

    int cur; cin >> cur;
    for(int i = 0; i < n; i++) {
        auto [d, k] = m[cur];
        m.erase(cur);
        cur += (d == 'L') ? -k : k;
    }

    cout << cur;
    return 0;
}