首页 > 其他分享 >P3369 【模板】普通平衡树

P3369 【模板】普通平衡树

时间:2024-10-01 16:44:21浏览次数:8  
标签:ver int tree dic P3369 平衡 first 模板 op

直接抄WIDA的pbds板子

#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;
typedef pair<int, int> V;
tree<V, null_type, less<V>, rb_tree_tag, tree_order_statistics_node_update> ver;
map<int, int> dic;
int main()
{
	int n; 
	cin >> n;
	for (int i = 1, op, x; i <= n; i++) {
		cin >> op >> x;
		if (op == 1) 
		{ // 插入一个元素x,允许重复
			ver.insert({x, ++dic[x]});
		} 
		else if (op == 2) 
		{ // 删除元素x,若有重复,则任意删除一个
			ver.erase({x, dic[x]--});
		} 
		else if (op == 3) 
		{ // 查询元素x的排名(排名定义为比当前数小的数的个数+1)
			cout << ver.order_of_key({x, 1}) + 1 << endl;
		} 
		else if (op == 4) 
		{ // 查询排名为x的元素
			cout << ver.find_by_order(--x)->first << endl;
		} 
		else if (op == 5) 
		{	
			// 查询元素x的前驱
			int idx = ver.order_of_key({x, 1}) - 1; // 无论x存不存在,idx都代表x的位置,需要-1
			cout << ver.find_by_order(idx)->first << endl;
		} 
		else if (op == 6) 
		{ 	
			// 查询元素x的后继
			int idx = ver.order_of_key( {x, dic[x]}); // 如果x不存在,那么idx就是x的后继
			if (ver.find({x, 1}) != ver.end()) idx++; // 如果x存在,那么idx是x的位置,需要+1
			cout << ver.find_by_order(idx)->first << endl;
		}
	}
}

标签:ver,int,tree,dic,P3369,平衡,first,模板,op
From: https://www.cnblogs.com/ruoye123456/p/18442964

相关文章

  • 【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
    文章目录C++模板进阶编程前言第一章:非类型模板参数1.1什么是非类型模板参数?1.1.1非类型模板参数的定义1.2非类型模板参数的注意事项1.3非类型模板参数的使用场景示例:静态数组的实现第二章:模板的特化2.1什么是模板特化?2.1.1模板特化的分类2.2函数模板特化......
  • PbootCMS设置当前站点模板,模板子目录,黑白名单,敏感词过滤等
    进入【全局配置】在后台左侧菜单中选择【全局配置】。进入【配置参数】在【全局配置】菜单下,选择【配置参数】。进入【基本配置】在【配置参数】页面中,找到【基本配置】选项。配置敏感词过滤在【基本配置】页面中,找到【敏感词过滤】选项并添加需要过滤的敏......
  • pbootcms模板后台编辑器无法上传图片提示:后端配置项没有正常加载,上传插件不能正常使用
    当你在使用PbootCMS后台时,遇到Ueditor编辑器中的单图片上传按钮无反应,多图片上传提示“后台配置项返回格式出错,上传功能将不能正常使用!”的问题时,可以通过以下步骤来解决。问题分析该问题通常是由于时间区域配置不正确导致的。具体来说,Linux系统对时间区域的大小写非常敏感......
  • 确保 PbootCMS 网站能够正常运行,并且成功安装和授权模板
    准备PHP环境确认PHP版本使用命令行或SSH登录服务器,运行以下命令检查PHP版本:sh php-v确认版本为5.3+。上传PbootCMS文件使用FTP客户端使用FTP客户端(如FileZilla、WinSCP等)连接到服务器。将PbootCMS的所有文件上传到服务器的根目录(通常......
  • PbootCMS模板安装与授权方法
    为了确保PbootCMS网站能够正常运行,并且安装和授权模板,以下是详细的步骤说明:步骤1:部署PbootCMS准备PHP环境确保服务器支持PHP5.3+版本。如果使用的是虚拟主机,确认其支持PHP5.3+版本。上传PbootCMS文件将PbootCMS的所有文件通过FTP上传到服务器的根......
  • Kwin代码阅读——模板类
    首先,理解一些基本概念:1.模板:  在C++中,模板允许我们编写通用的代码,可以接受不同的数据类型,而不需要重复编写代码。模板有两种主要形式:函数模板和类模板。这里我们讨论的是类模板。2.继承:  继承是面向对象编程中的一个特性,允许一个类(子类)继承另一个类(父类)的属性和方......
  • pbootcms模板指定内容标签调用
    为了更好地理解和使用PbootCMS中的指定内容标签,可以将相关的控制参数和可用的内容标签整理成表格形式。这样可以更清晰地展示每个参数的作用和用法。控制参数参数说明必填id=*内容的ID号,用于控制输出的内容,适用于单页或列表页内容。是scode=*单页的分类编码......
  • PbootCMS设置当前站点模板,模板子目录,黑白名单,敏感词过滤等
    在PbootCMS中,后台操作涉及多个配置项,包括更换模板路径、配置后台模板子目录、配置后台黑名单和白名单以及敏感词过滤。以下是详细的步骤和解释。后台操作更换模板路径进入【基础内容】在后台管理界面左侧菜单栏中点击“基础内容”。选择【站点信息】在“基础内容”......
  • PbootCMS全站模板date时间标签/时间格式常见的8种调用方式
    为了更好地展示PbootCMS中不同时间格式的使用方法,可以将上述信息汇总成一个表格。以下是详细的表格,展示了列表页和内容详情页中不同的时间格式及其效果。时间格式汇总表标签名功能描述格式示例效果示例[list:date]列表页时间(默认格式)[list:date]2021-12-0609:1......
  • pbootcms模板幻灯片调用代码大全
    在PbootCMS中,模板自带的幻灯片功能可以通过 {pboot:slide} 标签来实现。下面详细介绍该标签的使用方法及其控制参数。幻灯片标签详解标签语法html {pboot:slidegid=*num=*}<!--幻灯片内容-->{/pboot:slide}控制参数gid=*分组:必填参数,用于指定需要输......