ABC 248 | D - Range Count Query
题目描述
给定一个数组,给定组询问,每组询问给出,输出下标范围内数值等于的元素个数。
数据范围
题解
由于本题中每个数字的范围是,所以可以预处理出每个数字的下标,对于每组询问,只需二分查找的位置数组,计算在范围内的下标的个数即可。
若存入vector中,可直接使用lower_bound()和upper_bound()查询,准确且方便
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 2e5 + 10;
vector<int> vec[N];
int n, q;
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i ++){
int x;
scanf("%d", &x);
vec[x].push_back(i);
}
scanf("%d", &q);
while(q --){
int l, r, x;
scanf("%d%d%d", &l, &r, &x);
auto itl = lower_bound(vec[x].begin(), vec[x].end(), l);
auto itr = upper_bound(vec[x].begin(), vec[x].end(), r);
printf("%d\n", itr - itl);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架