专栏文章
题解:P14590 计组实验
P14590题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @min1wsxb
- 此快照首次捕获于
- 2025/12/01 19:13 3 个月前
- 此快照最后确认于
- 2025/12/01 19:13 3 个月前
显然模拟。
首先,既然要打印学生名单,就要先找到能存下学号及其对应实验的数据结构。
不难想到使用
vector 可以实现。具体的,我们可以定义这样一个如下的
CPPvector 数组:vector<int> Class[300005];
Class[i] 就代表了选择第 个实验的名单,Class[i][j] 则代表选择第 个实验的第 号学生。注意:因为
vector 的下标从 0 开始,所以 Class[i][j] 代表选择第 个实验的第 号学生而不是第 号。然后,就是依照题意模拟了。这里没什么好讲的,细节刚刚已经提到过了。(如果你觉得你已经注意到了上述要点,那么你不妨看看输出格式)
AC 代码:
CPP#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;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...