用c++完成这道题:题目描述 给定 NN 个整数,再给定 MM 次询问,每次询问给出一个整数 XX ,请求出针对每次询问,整数 XX 在 NN 个整数中出现的次数。 输入 第 11 行读入一个整数 NN 和 MM。 第 22 行读入 NN 个整数,整数之间用空格隔开。 第 33 行读入 MM 个整数,整数之间用空格隔开。 输出 输出 MM 个整数,用空格隔开,第 ii 个整数,代表针对第 ii 次询问的结果。 样例 输入复制 6 3 1 2 1 3 1 2 2 1 3 输出复制 2 3 1 说明 【数据范围】 1 ≤ N,M ≤ 101≤N,M≤1055 读入的 NN 个整数和 MM 次询问的值均在[11,10109]范围内。
时间: 2024-03-10 13:49:43 浏览: 113
以下是你需要的 C++ 代码:
```c++
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
unordered_map<int, int> cnt;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
cnt[x]++;
}
for (int i = 0; i < m; i++) {
int x;
cin >> x;
cout << cnt[x] << " ";
}
return 0;
}
```
代码解释:
首先读入整数 $n$ 和 $m$,然后用 `unordered_map` 统计每个数出现的次数。最后依次读入每个询问的数 $x$,输出其在 $n$ 个数中出现的次数即可。
相关问题
用c++完成这道题:给定 NN 个整数,再给定 MM 次询问,每次询问给出一个整数 XX ,请求出针对每次询问,整数 XX 在 NN 个整数中出现的次数。
好的,这是一个典型的计数问题,可以使用哈希表来解决。以下是 C++ 代码实现:
```c++
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
unordered_map<int, int> mp; // 哈希表
// 读入 NN 个整数
for (int i = 0; i < n; i++) {
int num;
cin >> num;
mp[num]++; // 哈希表中计数器加一
}
// 处理 MM 次询问
for (int i = 0; i < m; i++) {
int x;
cin >> x;
cout << mp[x] << endl; // 输出整数 x 出现的次数
}
return 0;
}
```
首先读入 NN 个整数,使用 unordered_map 来实现哈希表,对每个整数进行计数。然后处理 MM 次询问,输入整数 x 并输出其出现的次数。
用c++完成这道题:题目描述 给定一个 nn 个数的数组 aa,再给定 mm 次询问,每次询问一个整数 xx 在数组 aa 中是否存在,如果存在,输出 Y,不存在输出 N。 输入 第 11 行是一个整数 nn(5≤n≤10^55≤n≤10 5 ); 第 22 行有 nn 个整数,数与数之间用空格隔开; 第 33 行有一个整数mm(5≤m≤10^55≤m≤10 5 ); 第 44 行有 mm 个整数,数与数之间用空格隔开; 输出 输出 mm 次查询每次查询的结果(Y 或者 N),每次查询结果之间用空格隔开。
很高兴为您解答这道题目!这里给出 C++ 代码实现:
```c++
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> s;
int n, m, x;
cin >> n;
for(int i = 0; i < n; i++)
{
int t;
cin >> t;
s.insert(t);
}
cin >> m;
for(int i = 0; i < m; i++)
{
cin >> x;
if(s.count(x)) // 判断元素是否存在
cout << "Y ";
else
cout << "N ";
}
return 0;
}
```
这里使用了 C++ 的 `unordered_set` 容器,将数组中的元素存储在其中,然后通过 `count` 函数判断元素是否存在。
阅读全文