题目描述:
给定长度为n的整数序列a,以及长度为k的连续区间询问。询问次数为q。对于每个询问,求出区间中不同数的个数。
输入格式:
第一行两个整数n和k, 第二行n个整数表示序列a, 接下来q行,每行两个整数表示询问区间的左右端点。区间编号从1开始。
输出格式:
共k行,每行一个整数表示询问的区间中不同元素的个数。
样例输入:
5 3
1 2 1 3 4
1 3
2 4
3 5
样例输出:
2
2
3
使用 STL set 容器。
代码如下:
#include <iostream>
#include <set>
using namespace std;
const int maxn = 1e5 + 10;
int n, k, q;
int a[maxn];
int main()
{
cin >> n >> k;
for (int i = 0; i < n; i++)
cin >> a[i];
cin >> q;
while (q--)
{
int l, r;
cin >> l >> r;
l--, r--;
set<int> s;
for (int i = l; i <= r; i++)
s.insert(a[i]);
cout << s.size() << endl;
}
return 0;
}
总结 :今天的出题与解题就到这里辣,有不会的小伙伴们
可以评论区发表意见,我会一一解答哦!
如果您觉得小编写的还可以或者还有哪些地方需要改进的话评论区留言好嘛!
感谢您的阅读!