P3834 【模板】可持久化线段树 2(主席树)

news/2025/2/13 12:17:27/文章来源:https://www.cnblogs.com/gxjcnblogs/p/18712875


这是一道主席树的模板题,

#include<iostream>
#include<set>
#include<map>
#include<algorithm>
#include<vector>
#include<cmath>
#include<climits>
#include<cstring>
#define int long long
const int N = 1e6+5;
using namespace std;
char* p1, * p2, buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int read()
{int x = 0, f = 1;char ch = nc();while (ch < 48 || ch>57){if (ch == '-')f = -1;ch = nc();}while (ch >= 48 && ch <= 57)x = x * 10 + ch - 48, ch = nc();return x * f;
}
int id = 0;
vector<int>v;
int a[N];
struct tree {int ch[2];int s = 0;
}tr[N*22];
int root[N];
void build(int& x, int l, int r) {x = ++id;if (l == r)return;int m = (l + r) >> 1;build(tr[x].ch[0], l, m);build(tr[x].ch[1], m + 1, r);
}
void insert(int x, int& y, int l, int r, int v) {y = ++id;tr[y] = tr[x];tr[y].s++;if (l == r)return;int m = (l + r) >> 1;if (v <= m)insert(tr[x].ch[0], tr[y].ch[0], l, m, v);else insert(tr[x].ch[1], tr[y].ch[1], m + 1, r, v);
}
int query(int x, int y, int l, int r, int k) {if (l == r)return l;int m = (l + r) >> 1;int s = tr[tr[y].ch[0]].s - tr[tr[x].ch[0]].s;if (k <= s)return query(tr[x].ch[0], tr[y].ch[0], l, m, k);else return query(tr[x].ch[1], tr[y].ch[1], m+1, r, k-s);
}
int getid(int x) {return lower_bound(v.begin(), v.end(), x) - v.begin() + 1;
}
signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n, m;cin >> n >> m;for (int i = 1; i <= n; i++) {cin >> a[i];v.push_back(a[i]);}sort(v.begin(), v.end());v.erase(unique(v.begin(), v.end()), v.end());//build(root[0], 1, v.size());for (int i = 1; i <= n; i++) {insert(root[i - 1], root[i], 1, v.size(), getid(a[i]));}for (int i = 1; i <= m; i++) {int l, r, k;cin >> l >> r >> k;int id = query(root[l - 1], root[r], 1, v.size(), k) - 1;cout << v[id] << endl;}return 0;
}

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

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

相关文章

包括H2O的人形机器人相关论文总结

1. 前言 这篇博客主要用于记录包括H2O的人形机器人相关论文总结。 一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流。 如有不对之处,欢迎评论区指出错误,你我共同进步学习! 2. 正文 2.0 SMPL Skinned Multi-Person Linear (SMPL) Model 详细查看:https://bl…

【守护大地的安宁】地质灾害防治知多少?

当我们谈及自然灾害,地质灾害总是以其突发性和破坏力给人类社会带来严峻挑战。了解地质灾害的本质、防治工作的基本原则以及管理的综合体系,对于提升社会整体的抵御能力至关重要。今天,就让我们一起深入探讨地质灾害的奥秘,以及如何有效守护我们脚下的这片土地。地质灾害:…

DeepSeek R1,本地部署!支持WebUI

DeepSeek R1,本地部署才是王道!支持WebUI原创 阮小贰 阮小贰 阮小贰 科技自媒体阮小贰,AIGC拓荒人~38篇原创内容2025年01月31日 17:52 广东 DeepSeek R1本地部署,享受无限制、高隐私的AI体验! 核心内容:DeepSeek全球下载榜单登顶,流量巨大。DeepSeek R1是什么?De…

LLM4Rec:字节HLLM

背景 目前主流的推荐模型都是ID-based,这种ID-based的模型依赖user合item的交互信息,无法利用item和user的多模态信息,对冷启动不友好。 随着近年来LLM的突破性进展, 业界也在不断探索LLM在推荐系统中的应用, 这里大概可以分成三类:信息增强: 利用LLM为推荐系统提供一些精细…

安川SCARA机械手维修知识归纳

在工业自动化领域,安川机器人(YASKAWA机器人)以其高精度和可靠性著称,尤其是其SCARA机器人广泛应用于装配、搬运和分拣等任务。然而,即便是最可靠的设备也难免会出现故障。当安川SCARA机器人齿轮箱不转时,通常表现为机器人无法正常执行动作,或动作过程中出现卡顿、异响等…

2025-02-13.防流氓软件篡改主页

近期本人Windows 11启动后浏览器主页总被修改,禁用某些启动进程后问题仍没有彻底解决。具体现象为: chrome收藏夹的百度链接变成:bd.dhyto.com/lbd06 chrome每次启动,打开首页:360导航_一个主页,整个世界http://hao360.hjttif.com/dhhj edge每次启动,打开首页:http://p…

支付宝云Serveless+豆包AI实现AI日语学习APP

1. 引言 最近学日语,发现动词、形容词的变形规则又多又复杂,在不同语境里变化也不一样,句子结构和语法也很麻烦。为了提高学习效率,决定开发基于AI的日语学习APP,借助 AI 进行辅助学习,目前已经完成单词分析、句子结构分析、跟读功能。2. 技术栈 1. 支付宝云Serve less;…

DeepSeek V3/R1满血版,上线华为云

昇腾云服务已适配DeepSeek系列模型,欢迎广大开发者使用。摘要:昇腾云服务已适配DeepSeek系列模型,欢迎广大开发者使用。 DeepSeek V3/R1 671B旗舰模型(满血版),通常需要高端GPU进行推理,现在基于华为云昇腾云服务的全栈优化适配,可获得持平全球高端GPU部署模型的效果,…

相对单位rem和em的区别

1.rem css3中的rem是一个相对单位,是相对根元素字体大小的单位;使用rem的优点就是在计算子元素有关的尺寸时,只要根据html元素字体大小来计算即可. 注意:这个根元素是最大的那个根也就是html,见下图,一般浏览器默认的值是16px,也就是随着他的改动而改动。修改其他父元素…

80N03-ASEMI电机控制专用MOS管80N03

80N03-ASEMI电机控制专用MOS管80N03编辑:ll 80N03-ASEMI电机控制专用MOS管80N03 型号:80N03 品牌:ASEMI 封装:TO-252 最大漏源电流:80A 漏源击穿电压:30V 批号:最新 RDS(ON)Max:6.5mΩ 引脚数量:3 沟道类型:N沟道MOS管 芯片尺寸:MIL 漏电流: 恢复时间:ns 芯片材…

日志收集工具Telegraf和Promtail

日志收集和指标输出工具Telegraf以及Promtail工具说明Telegraf:Telegraf 是一个用于收集、处理、聚合和写入指标、日志和其他任意数据的代理。 提供超过 300 个插件的综合套件,涵盖系统监控、云服务和消息传递等广泛功能 支持集成用户定义的代码,以高效地收集、转换和传输数…

Docker问题:docker: Error response from daemon

问题 docker 拉取镜像失败解决方法 1、在 Docker 的配置文件中设置代理 编辑 Docker 配置文件 /etc/systemd/system/docker.service.d/http-proxy.conf(如果没有该文件,您可以手动创建它) sudo mkdir -p /etc/systemd/system/docker.service.d sudo vim /etc/systemd/system…