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

news/2025/9/23 15:45:36/文章来源:https://www.cnblogs.com/kibrel/p/19107339

原题

题目描述

小杨有一个长度为 \(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快乐!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度如何搜索网址网站推广优化趋势

1. nuScenes 数据集 1.1 概述 nuScenes 数据集 (pronounced /nu:ːsiː:nz/) 是由 Motional (以前称为 nuTonomy) 团队开发的自动驾驶公共大型数据集。nuScenes 数据集的灵感来自于开创性的 KITTI 数据集。 nuScenes 是第一个提供自动驾驶车辆整个传感器套件 (6 个摄像头、1 …

AI 时代下,开发流程的重塑:从“代码先行”到“文档驱动”

本文探讨了AI编程工具在提升效率的同时,因缺乏顶层设计而导致项目混乱的困境。并提出一种“文档驱动”的AI原生开发新范式,强调高质量、结构化的文档是驾驭AI编码,实现高质量交付的关键。文章标题 引言:AI 编程工具…

P13617 [ICPC 2025 APC] Bit Counting Sequenc

题意:给定长度 $n \leq 5 \times 10^5$ 的 popcount 序列 $\{a_i\}$,求其对应的原序列。思路:观察发现 popcount 序列具有倍增构造性质,将原序列 $[0,2^k - 1]$ 的第 $k$ 位改成 $1$ 可得到 $[2^k,2^{k + 1} - 1]$…

perl -MCPAN -e install GD;

001、 Package gdlib was not found in the pkg-config search path.Perhaps you should add the directory containing `gdlib.pcto the PKG_CONFIG_PATH environment variableNo package gdlib found

Day 02 HTML的基础 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

如何在网站添加代码大气精美网站设计工作室织梦模板

【芯片DFX】万字长文带你搞懂JTAG的门门道道【芯片DFX】ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析

网络建站的费用微网站开发一般费用多少钱

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…

什么网站专做店铺wordpress 一栏主题

首先已经创建好了 Vue 框架&#xff0c;安装好了 node.js。 没有完成的可按照此博客搭建&#xff1a;搭建Vue项目 之后打开终端&#xff0c;使用命令。 1、命令安装 axios 和 vue-axios npm install axios --save npm install vue-axios --save2、package.json 查看版本 在 p…

做静态网站的步骤怎么下载网页视频到本地

一、类型转换 C语言中的类型转换比较松散&#xff0c;C新增4个类型转换运算符&#xff0c;更加严格的显示类型转换&#xff0c;使转换的效率更加规范 1、static_cast static_cast&#xff0c;用于仅在编译时检查的强制转换。 如果编译器检测到你尝试在完全不兼容的类型之间强制…

微信公众号手机网站做网站有哪些需求

在工作中&#xff0c;偶尔看到有些机器的网口名字是以ethX命令&#xff0c;有些则以enpXsX这种名字命名。网上的资料说的都不太明白,资料也无据可查&#xff0c;很难让人信服。于是决定自己查了下官方的资料和源码&#xff0c;把这些搞清楚。 官方文档&#xff1a;Predictable…

P3959 [NOIP 2017 提高组] 宝藏 题解

link 题目要求任选图中一点为根,通过拓展道路最终形成一棵树,使得代价总和最小,代价受深度和边权两个因素影响。 容易想到一种爆搜,任选一点为根,每次扫描已选点来不断尝试拓展道路,但这样做太蛋疼了,我们尝试优…

(二)若依前后端分离版本二次开发 代码生成、目录添加、数据字典维护

(二)若依前后端分离版本二次开发 代码生成、目录添加、数据字典维护一 摘要 主要介绍添加目录、菜单、代码自动生成等功能。 二 目标 2.1 掌握添加目录,菜单 2.2 掌握添加数据字典 2.3 掌握代码生成 三 实施 已标签…

C#与Access数据库操作简易指南:增删改查及类封装

简介:C#是面向对象的编程语言,常用于Windows应用开发,而Microsoft Access是一种数据库管理系统。本教程指导如何结合C#操作Access数据库进行基本的增删改查(CRUD)操作,使用ADO.NET通过OLEDB类连接和操作数据库。…

对之前部署hbase总结

部署路程为看黑马大数据视频 部署直到yarn集群部署之后看尚硅谷的视频完成部署即可 之后参考有可能会报错直接复制报错到csdn即可 启动代码和停止指令: 注意每次启动检查每一个主机启动是否完成 慢一些 否则会报错

网站排版图片网站禁止右键

一、前言 在大多数传统的web系统中&#xff0c;使用Redis一般都是作为缓存使用&#xff0c;在大数据查询时作为缓解性能的一种解决方案。博主的的系统中使用Redis也主要使用到缓存的作用&#xff0c;还有做了注册中心&#xff0c;分布式事务。其他的强大的功能&#xff0c;没有…

书画工作室网站模板网站建设做vip视频网站赚钱吗

在K8s中&#xff0c;创建Pod时的流程如下&#xff1a; 用户通过Kubectl或其他方式向API Server发送创建Pod的请求。API Server接收到请求后&#xff0c;会先进行权限验证和身份认证。一旦验证通过&#xff0c;API Server会将请求转发给Scheduler组件。Scheduler负责对新创建的…

网站自动更新时间代码网站域名和空间费用

网站地址&#xff1a;网络游戏防沉迷实名认证系统 PHP代码&#xff1a; 创建对应文件&#xff0c;在需要的位置get传参请求即可&#xff0c;具体参数参考 网络游戏防沉迷实名认证系统接口对接技术规范v2.0 1、上传信息 <?php $url "https://wlc.nppa.gov.cn/test…

百度推广要自己建站吗做网站需要公章吗

我们使用redis时发现yaml配置中的redis相关配置不生效&#xff0c;后面发现将配置修改甚至删除所有相关redis的配置&#xff0c;springboot依然能使用redis里面默认的db0并且不报错。上网查阅了一些文章&#xff0c;也都没有解决今天分享下&#xff0c;我的处理方法, SpringBo…

做网站关键词加到什么位置彩票网站如何建设

alist-org/alist Stars: 35.6k License: AGPL-3.0 alist 是一个支持多存储的文件列表/WebDAV 程序&#xff0c;使用 Gin 和 Solidjs。 该项目的主要功能、关键特性、核心优势包括&#xff1a; 支持多种存储方式易于部署和开箱即用文件预览&#xff08;PDF、markdown、代码等&…