C++代码实现:交互题,给定 N 种颜色,每种颜色恰好 2 个球,每次可以向集合中插入/删除一个球,然后得到集合中有多少种颜色。你需要在 10^6 次操作内将球两两配对
时间: 2024-04-12 14:27:01 浏览: 30
以下是用 C++ 实现的代码示例:
```cpp
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
int N; // 颜色种类数
cin >> N;
unordered_map<int, int> colors; // 哈希表,用于记录颜色和球的数量
int numColors = 0; // 当前集合中的颜色种类数
for (int i = 0; i < 2 * N; i++) {
int color;
cin >> color;
if (colors.find(color) != colors.end()) {
// 集合中已经有该颜色的球,配对并删除
colors[color]--;
if (colors[color] == 0) {
colors.erase(color);
numColors--;
}
} else {
// 集合中没有该颜色的球,插入并增加颜色种类数
colors[color]++;
numColors++;
}
cout << numColors << endl;
}
return 0;
}
```
这段代码首先读取输入的颜色种类数 N,然后进行 2N 次操作。每次操作时,从输入中读取球的颜色,并根据上述策略更新集合中的颜色和数量。
希望这段代码能够帮助到你!如果还有其他问题,请随时提问。