题解:P14590 计组实验
Dont_Be_Afraid · · 题解
显然模拟。
首先,既然要打印学生名单,就要先找到能存下学号及其对应实验的数据结构。
不难想到使用 vector 可以实现。
具体的,我们可以定义这样一个如下的 vector 数组:
vector<int> Class[300005];
Class[i] 就代表了选择第 Class[i][j] 则代表选择第
注意:因为 vector 的下标从 0 开始,所以 Class[i][j] 代表选择第
然后,就是依照题意模拟了。这里没什么好讲的,细节刚刚已经提到过了。(如果你觉得你已经注意到了上述要点,那么你不妨看看输出格式)
AC 代码:
#include <bits/stdc++.h>
using namespace std;
vector<int> Class[300005];
int main() {
int n, m;
cin >> n >> m;
while (m--) {
int opt;
cin >> opt;
if (opt == 1) {
int i1, x;
cin >> i1 >> x;
Class[i1].push_back(x);
} else {
int i1, j1, i2, j2;
cin >> i1 >> j1 >> i2 >> j2;
swap(Class[i1][j1 - 1], Class[i2][j2 - 1]);
}
}
for (int i = 1; i <= n; i++) {
cout << Class[i].size() << ' ';
for (int j : Class[i]) {
cout << j << ' ';
}
cout << '\n';
}
return 0;
}