尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

洛谷P10288 [GESP样题 八级] 区间

洛谷P10288 [GESP样题 八级] 区间
📅 发布时间:2026/6/18 18:19:46

原题

题目描述

小杨有一个长度为 \(n\) 的正整数序列 \(A\)。

小杨有 \(q\) 次询问。第 \(i\) 次(\(1\le i\le q\))询问时,小杨会给出 \(l_i,r_i,x_i\),请你求出 \(x_i\) 在 \(A_{l_i}, A_{l_i+1}, \dots A_{r_i}\) 中出现的次数。

输入格式

第一行包含一个正整数 \(T\),表示数据组数。

对于每组数据:第一行包含一个正整数 \(n\),表示序列 \(A\) 的长度。
第二行包含 \(n\) 个正整数 \(A_1,A_2,\dots,A_n\),表示序列 \(A\)。
第三行包含一个正整数 \(q\),表示询问次数。接下来 \(q\) 行,每行三个正整数 \(l_i,r_i,x_i\),表示一组询问。

输出格式

对于每组数据,输出 \(q\) 行。第 \(i\) 行(\(1\le i\le q\))输出一个非负整数,表示第 \(i\) 次询问的答案。

输入输出样例 #1

输入 #1

2
5
7 4 6 1 1
2
1 2 3
1 5 1
5
1 2 3 4 5
2
5 5 3
1 4 3

输出 #1

0
2
0
1

说明/提示

子任务 分值 \(n\) \(q\) \(\max A_i\)
\(1\) \(30\) \(\le 100\) \(\le 100\) \(\le 10\)
\(2\) \(30\) \(\le 10^5\) \(\le 10^5\) \(\le 10^5\)
\(3\) \(40\) \(\le 10^5\) \(\le 10^5\) \(\le 10^9\)

对于全部数据,保证有 \(1 \leq T\le 5\),\(1 \le n,q\le 10^5\),\(1 \le A_i\le 10^9\)。

解释

这道题首先就是可以通过暴力打到30pts: 统计x的出现次数。

代码来自无名之雾

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();return s*w;
}
inline void write(int x){if(x==0){putchar('0');return;}int len=0,k1=x,c[10005];if(k1<0)k1=-k1,putchar('-');while(k1)c[len++]=k1%10+'0',k1/=10;while(len--)putchar(c[len]);
}
int a[100005];
signed main(){ int t=read();while(t--){ int n=read();for(int i=1;i<=n;i++)a[i]=read();int q=read();while(q--){int l=read(),r=read(),x=read();int cnt=0;for(int i=l;i<=r;i++){if(a[i]==x)cnt++;}cout<<cnt<<"\n";}} return 0;
}

然而,我们要的是能够AC的完整代码。这里可以采取一个类似于前缀和的策略:
可以建这样的一个结构

{{1: 1}, {1:1, 2:1}, {1:1, 2:2}} // {1, 2, 2}

然而,这样会MLE。
那么我们为何不把umap省略成单个数字呢?
直接在a[i]存储当前数组出现的次数,然后再用一个umap<int, vector<int>>存储每个数字对应的位置——直接在区间末尾找到对应的数字位置,然后减去区间开始前的数字位置:

#include<bits/stdc++.h>
#define umap unordered_map
using namespace std;constexpr int maxn=1e5+5;
int T, n, q;
int a[maxn]; 
umap<int, vector<int>> mp; int search(int from, int x) {for(int i=mp[x].size()-1;i>=0;i--) {if(mp[x][i]<=from) return a[mp[x][i]];}return 0;
}signed main() {scanf("%d",&T);while(T--) {scanf("%d",&n);umap<int, int> store;for(int i=1;i<=n;i++) {int x;scanf("%d",&x);(store.count(x))?(store[x]++):(store[x]=1);a[i] = store[x];mp[x].push_back(i);}scanf("%d",&q);while(q--) {int l, r, x;scanf("%d%d%d",&l,&r,&x);printf("%d\n",search(r, x)-search(l-1, x));}mp.clear();}return 0;	
}

AC快乐!

相关新闻

  • AI 时代下,开发流程的重塑:从“代码先行”到“文档驱动”
  • (二)若依前后端分离版本二次开发 代码生成、目录添加、数据字典维护
  • C#与Access数据库操作简易指南:增删改查及类封装

最新新闻

  • PC无法读取SD卡并提示格式化的修复方法
  • 39钝刀工艺:让篆刻白文重现金石苍劲之美 - 资讯焦点
  • 2026年投票制作平台怎么选 五家服务商横向对比供参考 - 深度智识库
  • 2026 年南通工字钢批发厂家实测测评,工程采购避坑指南 - LYL仔仔
  • Retrospected AI教练功能详解:ChatGPT如何优化你的敏捷回顾流程
  • 汕尾足不出户卖黄金,正规回收流程详解 - 余生黄金回收

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号