题解
2026-06-07 11:05:08
发布于:湖南
16阅读
0回复
0点赞
题意
给定一个长度为 的数组,进行 次询问。每次询问给出一个区间 ,要求输出:这个区间里有多少个不同的数字。
思路
先输入数组长度 和询问次数 。
输入数组的 个数字,存入数组 中(从下标 开始存)。
对于每一次询问:
输入区间左端点 和右端点 。
创建一个集合 ,用来自动去重。
把数组中从 到 的所有数字插入集合。
集合的大小 就是区间内不同数字的个数。
每次询问后输出答案。
完整代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int a[5005];
for (int i = 1; i <= n; ++i) {
cin >> a[i];
}
while (m--) {
int l, r;
cin >> l >> r;
unordered_set<int> s;
for (int i = l; i <= r; ++i) {
s.insert(a[i]);
}
cout << s.size() << '\n';
}
return 0;
}

这里空空如也








有帮助,赞一个