P6136 【模板】普通平衡树(数据加强版)题解 pb_ds 模版

【模板】普通平衡树(数据加强版)

传送门

题目背景

本题是 P3369 数据加强版,扩大数据范围并增加了强制在线

题目的输入、输出和原题略有不同,但需要支持的操作相同。

题目描述

您需要写一种数据结构(可参考题目标题),来维护一些整数,其中需要提供以下操作:

  1. 插入一个整数 x x x
  2. 删除一个整数 x x x(若有多个相同的数,只删除一个)。
  3. 查询整数 x x x 的排名(排名定义为比当前数小的数的个数 + 1 +1 +1)。
  4. 查询排名为 x x x 的数(如果不存在,则认为是排名小于 x x x 的最大数。保证 x x x 不会超过当前数据结构中数的总数)。
  5. x x x 的前驱(前驱定义为小于 x x x,且最大的数)。
  6. x x x 的后继(后继定义为大于 x x x,且最小的数)。

本题强制在线,保证所有操作合法(操作 2 2 2 保证存在至少一个 x x x,操作 4 , 5 , 6 4,5,6 4,5,6 保证存在答案)。

输入格式

第一行两个正整数 n , m n,m n,m,表示初始数的个数和操作的个数。

第二行 n n n 个整数 a 1 , a 2 , a 3 , … , a n a_1,a_2,a_3,\ldots,a_n a1,a2,a3,,an,表示初始的数

接下来 m m m 行,每行有两个整数 opt \text{opt} opt x ′ x' x opt \text{opt} opt 表示操作的序号($ 1 \leq \text{opt} \leq 6 ), ), ),x’$ 表示加密后的操作数。

我们记 last \text{last} last 表示上一次 3 , 4 , 5 , 6 3,4,5,6 3,4,5,6 操作的答案,则每次操作的 x ′ x' x 都要异或 last \text{last} last 才是真实的 x x x。初始 last \text{last} last 0 0 0

输出格式

输出一行一个整数,表示所有 3 , 4 , 5 , 6 3,4,5,6 3,4,5,6 操作的答案的异或和

样例 #1

样例输入 #1

6 7
1 1 4 5 1 4
2 1
1 9
4 1
5 8
3 13
6 7
1 4

样例输出 #1

6

提示

样例解释

样例加密前为:

6 7
1 1 4 5 1 4
2 1
1 9
4 1
5 9
3 8
6 1
1 0

限制与约定

对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1n105 1 ≤ m ≤ 1 0 6 1\leq m\leq 10^6 1m106 0 ≤ a i , x < 2 30 0\leq a_i,x\lt 2^{30} 0ai,x<230

本题输入数据较大,请使用较快的读入方式。


upd 2022.7.22 \text{upd 2022.7.22} upd 2022.7.22:新增加 9 9 9 组 Hack 数据。

注明

以上来自洛谷。 以上来自洛谷。 以上来自洛谷。
有 pb_ds 做法但是不能交题解,太/oh了。

解题思路

前置知识

  • pb_ds
  • pb_ds内的平衡树用法

正文

提供一种 pb_ds 做法,代码非常短。

因为是平衡树模版,直接使用 pb_ds 即可。注意在输入 x ′ x^{'} x要异或上上一次 3 , 4 , 5 , 6 3,4,5,6 3,4,5,6 操作的答案;最终答案为所有 3 , 4 , 5 , 6 3,4,5,6 3,4,5,6 操作的答案的异或和tree 一定!一定!要开 unsigned long longlong long 左移 20 20 20 位可能会爆。

说完注意点,接下来只有用 pb_ds 库中内置的平衡树实现题目中的相应操作即可。

AC Code

#include<bits/stdc++.h>
#include<ext/pb_ds/tree_policy.hpp>
#include<ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
#define int unsigned long long
int n, m, a[100005];
tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> Tree;
int Answer;
signed main() {ios::sync_with_stdio(false), cin.tie(0), cout.tie(0), cin >> n >> m;for (register int i = 1; i <= n; ++i) cin >> a[i], Tree.insert((a[i] << 20) + i);short opt;int x, last = 0;for (register int i = 1; i <= m; ++i) {cin >> opt >> x, x ^= last;if (opt == 1) Tree.insert((x << 20) + i);else if (opt == 2) Tree.erase(Tree.lower_bound(x << 20));else if (opt == 3) last = Tree.order_of_key(x << 20) + 1, Answer ^= last;else {if (opt == 4) last = *Tree.find_by_order(x - 1);if (opt == 5) last = *--Tree.lower_bound(x << 20);if (opt == 6) last = *Tree.lower_bound((x + 1) << 20);last >>= 20, Answer ^= last;}}cout << Answer << endl;return 0;
}

想想看赛场上其他人调一万年平衡树没调出来但是你用 pb_ds 10 m i n 10min 10min 通过的快感。

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

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

相关文章

提问的智慧-怎么提问

提问的智慧 转载自&#xff1a;Github&#xff08;https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md&#xff09;&#xff0c;没想到有中文版的&#xff0c;分享给你们。 How To Ask Questions The Smart Way Copyright © 2…

如何在Mac上停止旋转等待光标?这里提供详细步骤

序言 彩虹色的圆圈对于Mac用户来说是一个痛苦的景象。如果你幸运的话,它会在几秒钟内消失,但更常见的是,它会停留几分钟,让你无助地被锁在应用程序或整个Mac之外。 由于并不总是清楚如何处理转圈圈的光标,或者首先是什么导致了它,让我们将其分解。在本文中,我们将了解…

Google Hacking从0到1

文章目录 前言1、什么是google搜索1.1基础查询1.2高级搜索1.3使用布尔运算符 2、高级运算符2.1运算符语法2.2常用运算符 3、Google Hacking 基础3.1目录列出3.1.1 查找特定目录3.1.2 查找特定文件3.1.3 服务器版本 3.2目录遍历/目录穿越 4、10个简单的安全搜索5、总结参考 前言…

【C语言】InfiniBand内核驱动_mlx4_ib_post_send

一、注释 以下是_mlx4_ib_post_send函数的注释&#xff0c;该函数用于处理InfiniBand工作请求&#xff08;WRs&#xff09;的发送过程&#xff1a; static int _mlx4_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,const struct ib_send_wr **bad_wr, bool …

字符串处理之Manacher算法

字符串str中&#xff0c;最长回文子串的长度如何求解&#xff1f; //Manacher算法解决的问题 //字符串str中&#xff0c;最长回文子串的长度如何求解&#xff1f; //如何做到时间复杂度O(N)完成&#xff1f; public class Manacher {// //伪代码 // public static int[] manac…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(5)

PS从入门到精通视频各类教程整理全集&#xff0c;包含素材、作业等 最新PS以及插件合集&#xff0c;可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制&#xff0c;今天先分享到这里&#xff0c;后续持续更新 初寒调色案例及练习图 等文件 https://www.alipan.…

记一次使用spring事件机制失效排查修复

前言 在日常业务开发中过程&#xff0c;我们有时候为了业务解耦&#xff0c;会利用spring的机制&#xff0c;就是利用spring提供的ApplicationListener、ApplicationEventMulticaster等核心API来实现。&#xff08;注&#xff1a; 我这边列的是核心底层API接口&#xff0c;正常…

shell脚本编写纪要

shell脚本后缀为.sh 1&#xff09;指定bash 首行&#xff0c;必须写下 #! /bin/bash 2) 修改可执行权限 chmod 777 xxx.sh 3)常用命令 echo "hello world"打印字符串 read xxxstr读取用户输入的字符串&#xff0c;回车结束&#xff0c;并将字符串赋值给变量xxxst…

常见故障排查和优化

一、MySQL单实例故障排查 故障现象 1 ERROR 2002 (HY000): Cant connect to local MySQL server through socket /data/mysql/mysql.sock (2) 问题分析&#xff1a;以上情况一般都是数据库未启动或者数据库端口被防火墙拦截导致。 解决方法&#xff1a;启动数据库或者防火墙…

电脑常见故障检测方法与对应问题分析说明

电脑常见故障检测方法与对应问题分析说明 前言说明1、机器无法开机故障2、屏幕无法显示3、无法联网4、能开机但是无法进入系统&#xff0c;提示not boot5、USB接口无法识别U盘 前言说明 本文为小白向&#xff0c;许多内容属于经验学而非科学&#xff0c;还望大佬们轻喷。 如上…

稠密连接网络(DenseNet)

文章目录 简介稠密连接&#xff1a; 简介 DenseNet的核心思想是改进网络中特征的传递方式&#xff0c;通过在每个层之间建立直接的连接&#xff08;即稠密连接&#xff09;&#xff0c;来提高信息流动和梯度传播的效率&#xff0c;从而解决深度神经网络中的梯度消失和梯度爆炸…

Word中使用Zotero插入文献

1. word 里面有插件 2. 插入文献 2.1 点击【Add/Edit Citation】 2.2 在方条中输入文献,回车 3. 显示Reference 在文档中选好reference的位置, 点击【Add/Edit Bibliograph

pygwalker+streamlit python看板库使用体验

算作前言 在 B 站看到 pygwalker 的介绍&#xff0c;很感兴趣。 是一个类似于简化版的 tableau 工具。 原版 docs PyGWalker 文档 – Kanaries 搭建看板 直接结合 streamlit 使用&#xff0c;streamlit 真的神器。 import pygwalker as pyg import pandas as pd import str…

分布式全闪占比剧增 152%,2023 年企业存储市场报告发布

近日&#xff0c;IDC 发布了 2023 年度的中国存储市场报告。根据该报告&#xff0c;在 2023 年软件定义存储的市场占比进一步扩大&#xff0c;分布式全闪的增长尤其亮眼&#xff0c;其市场份额从 2022 年的 7% 剧增到 2023 年的 17.7%&#xff0c;增长了 152%。 01 中国企业存…

递归遍历目录结构和树状展现

在D盘下创建文件夹“电影”&#xff0c;在文件夹“电影”下创建“华语”、“好莱坞”&#xff0c;在文件夹“华语”下创建文件“人民的名义.mp4”、“天安门传奇.mp4”、“程序员统治世界.mp4”&#xff0c;在文件夹“好莱坞”下创建文件“国王的演讲.mp4”、“速度与激情8.mp4…

Java接口与继承实践:Ether通信系统的构建(day16)

创建一个接口Icontroller, 再创建一个接口IReceiver, 创建一个子类实现IReceiver&#xff0c; 创建一个子类实现IContrller&#xff0c; 创建一个类Ether 创建一个Signal类 创建一个类Radiosignal继承Signal 创建一个用户User 最后创建一个Main类 今日总结&#xff1a…

如何导出requirements.txt

诸神缄默不语-个人CSDN博文目录 为了控制依赖版本&#xff0c;在发布软件时往往也会同时发布requirements.txt&#xff0c;展示了软件所使用的依赖包的版本。 要导出requirements.txt文件&#xff0c;通常有两种常用的方法&#xff0c;取决于你是想从当前环境中导出所有包&am…

梵宁教育课程介绍:设计之路,从这里开始

梵宁教育作为一家靠谱且正规的线上教育机构&#xff0c;在师资力量、教学内容、教学方式、服务保障以及社会责任等方面都表现出色。他们致力于为广大学员提供高质量的学习设计教育服务&#xff0c;帮助他们掌握核心知识和技能&#xff0c;实现个人价值和职业梦想。 梵宁教育的课…

【Android Studio3.5.2安装以及错误错误解决】

前言 下面是博主在安装Android studio时遇到的一些问题&#xff0c;并且花费很长时间寻找解决方法&#xff0c;经过了血和泪的教训下面将自己在安装过程中遇到的查看的资料贴出来&#xff08;感谢各位大佬的文章帮助本闲狗解答疑惑&#xff0c;此处贴出原文链接&#xff0c;如…

【WEEK5】 【DAY5】DML语言【中文版】

2024.3.29 Friday 目录 3.DML语言3.1.外键&#xff08;了解&#xff09;3.1.1.概念3.1.2.作用3.1.3.添加&#xff08;书写&#xff09;外键的几种方法3.1.3.1.创建表时直接在主动引用的表里写&#xff08;被引用的表的被引用的部分&#xff09;3.1.3.2.先创建表后修改表以添加…