班级里面有2∗n位同学,姓名互不相同,将他们两两分组分成了n组。 现在告诉你n组同学的具体分组情况,请回答老师的q个问题。 每个问题给你一个字符串表示同学A的姓名,对于每个问题请你输出和他组队的同学名称。
时间: 2024-05-15 18:19:59 浏览: 107
这道题可以用哈希表来存储每个同学和他的组员。具体来说,我们可以用一个哈希表`pairs`,其中键为同学的姓名,值为他的组员的姓名。遍历每个分组,将分组中的两个同学加入到`pairs`中,分别作为对方的组员。最后,对于每个问题给定的同学A,我们可以通过查询哈希表`pairs`来找到他的组员。
具体的实现可以参考以下代码:
```
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main() {
int n, q;
cin >> n >> q;
unordered_map<string, string> pairs; // 哈希表存储每个同学和他的组员
for (int i = 0; i < n; i++) {
string a, b;
cin >> a >> b;
pairs[a] = b;
pairs[b] = a;
}
for (int i = 0; i < q; i++) {
string a;
cin >> a;
cout << pairs[a] << endl;
}
return 0;
}
```
时间复杂度:O(n+q),其中n为同学的数量,q为问题的数量。遍历n个同学和q个问题,查询哈希表的时间复杂度为O(1)。
阅读全文