PAT (Basic Level) Practice 乙级1041-1045
发布日期:2025-05-01 22:51:19 浏览次数:13 分类:精选文章

本文共 1474 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要根据给定的试机座位号,找出对应的考试座位号。我们可以使用哈希表来存储每个试机座位号对应的准考证号和考试座位号,这样查询时可以非常高效。

方法思路

  • 读取输入数据:首先读取考生信息,包括准考证号、试机座位号和考试座位号。将这些信息存储在一个哈希表中,哈希表的键是试机座位号,值是一个包含准考证号和考试座位号的对。
  • 处理查询:读取待查询的试机座位号,逐个查找哈希表,输出对应的准考证号和考试座位号。
  • 这种方法的时间复杂度是O(N + M),其中N是考生信息的数量,M是待查询的数量。由于N和M的范围都不大,这种方法非常高效。

    解决代码

    #include 
    #include
    #include
    using namespace std;int main() { int n; cin >> n; unordered_map
    > seat_map; for (int i = 0; i < n; ++i) { string line; getline(cin, line); size_t first_space = line.find(' '); size_t second_space = line.find(' ', first_space + 1); string z = line.substr(0, first_space); string s = line.substr(first_space + 1, second_space - first_space - 1); string k = line.substr(second_space + 1); int s_num = stoi(s); int k_num = stoi(k); seat_map[s_num] = make_pair(z, k_num); } int m; cin >> m; for (int i = 0; i < m; ++i) { string line; getline(cin, line); size_t pos = line.find(' '); string ss = line.substr(0, pos); int s_num = stoi(ss); auto it = seat_map.find(s_num); if (it != seat_map.end()) { string z = it->second.first; int k = it->second.second; cout << z << ' ' << k << endl; } } return 0;}

    代码解释

  • 读取输入:首先读取N,然后读取N行的考生信息。每行的信息拆分成准考证号、试机座位号和考试座位号,并存储到哈希表中。
  • 查询处理:读取M个试机座位号,逐个查找哈希表,输出对应的准考证号和考试座位号。
  • 这种方法确保了高效查询和处理,能够快速解决问题。

    上一篇:SparkSql的元数据
    下一篇:PAT (Basic Level) Practice 乙级1031-1040

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2026年05月26日 13时19分26秒