【算法板子】普通平衡树(洛谷P3369)
<tree>平衡树
需要包含头文件
<ext/pb_ds/tree_policy.hpp>
和<ext/pb_ds/assoc_container.hpp>
或者直接
#include <bits/extc++.h>
创建下标和数值正相关平衡树的基本方法:(负相关只需要把
less
改成greater
)tree<double, null_type, less<double>, rb_tree_tag, tree_order_statistics_node_update> T;
//对于:
- tree<double, null_type, greater, rb_tree_tag, tree_order_statistics_node_update> T;
//这个东西是有一点长
//第一个参数是数据类型
//第二个要填null_type,低版本编译器填null_mapped_type
//第三个填比较函数 std::greater<> or std::less<> or cmp
//第四个填树的类型,有rb_tree_tag红黑树和splay_tree_tag
//第五个是为了支持查询第k大和排名的一个参数
//tree_order_statistics_node_update基本操作有
T.insert(); //插入一个数x
T.erase(T.lower_bound(x)); //删除一个数x
T.order_of_key(x); //查询x在树中的下标(排序后的下标)
*T.find_by_order(k); //查询下标为k的数,返回它的迭代器
- 因为这种tree和set一样不会保存相同的元素,所以在使用时我们可以加上
i * 1e-6
(其中i是输入时的下标or操作序,唯一就行)
#include<bits/stdc++.h>
using namespace std;#include <bits/extc++.h>
// #include <ext/pb_ds/tree_policy.hpp>
// #include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;// tree<double, null_mapped_type, greater<double>, rb_tree_tag, tree_order_statistics_node_update> T;
tree<double, null_type, less<double>, rb_tree_tag, tree_order_statistics_node_update> T;int main()
{// //freopen("3369.in", "r", stdin);//洛谷// //freopen("3369.out", "w", stdout);int q, opt, x;scanf("%d", &q);for (int i = 1; i <= q; ++ i){scanf("%d%d", &opt, &x);if(opt == 1) T.insert(x + i * 1e-6);//插入一个数if(opt == 2) T.erase(T.lower_bound(x));//删除一个数if(opt == 3) printf("%d\n", (int)T.order_of_key(x) + 1);//查询一个数的排名if(opt == 4) printf("%d\n", (int)*T.find_by_order(x - 1));//查询第k小的数 返回的是一个迭代器 这里k是从0开始算的,意思是最小的数是第0小的if(opt == 5) printf("%d\n", (int)round(*(-- T.lower_bound(x))));//查询一个数的前驱if(opt == 6) printf("%d\n", (int)round(*T.lower_bound(x + 1)));//查询一个数的后继}return 0;
}
【算法板子】普通平衡树(洛谷P3369)相关推荐
- 算法复习——割点(洛谷3388)
题目: 题目背景 割点 题目描述 给出一个n个点,m条边的无向图,求图的割点. 输入输出格式 输入格式: 第一行输入n,m 下面m行每行输入x,y表示x到y有一条边 输出格式: 第一行输出割点个数 第 ...
- 算法刷题【洛谷P1593】因子和(附等比数列求和公式推导)
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...
- 算法刷题【洛谷U193902】橡皮泥
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...
- 洛谷P3369 普通平衡树
刚学平衡树,分别用了Splay和fhq-treap交了一遍. 这是Splay的板子,貌似比较短? Splay #include <iostream> #include <cstdio ...
- 【洛谷P3369】 (模板)普通平衡树
https://www.luogu.org/problemnew/show/P3369 Splay模板 1 #include<iostream> 2 #include<cstdio& ...
- 【洛谷P3369】普通平衡树(splay)
emmmmm直接丢代码了 #include<iostream> #include<cstdio> #include<cstring> #include<str ...
- 洛谷P3369 【模板】普通平衡树(STL做法:vectormultiset)
problem solution1 - AC vector可以AC.lower_bound找第一个大于等于x的,upper_bound找第一个大于x的. #include<bits/stdc++ ...
- 二分算法:平均值(洛谷 UVA1451)
解析 这道题寻找平均值的max,答案明显具有单调性,所以采用二分算法 从0到1不断取中点mid作为平均值的可能点,看是否存在不短于l的数列均值>=mid不难得到以下代码: double st=0 ...
- 动态规划算法练习:蓝桥杯,洛谷的传纸条游戏的三种解法
目录 方法一 方法二 方法三 方法一 package extraExercise; /*算法训练 传纸条描述小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排 ...
- #洛谷#滑稽#编程版『达拉崩吧』
编程版『达拉崩吧 』 很久很久以前 算法突然出现 带来RE 带走了AC又消失不见 编程十分危险 世间谁最勇敢 一位神犇赶来 大声喊 我要 写出最高的树 打出最大的表 编出最长的代码 把AC带回到面前 ...
最新文章
- GC之二--GC是如何回收时的判断依据、shallow(浅) size、retained(保留) size、Deep(深)size...
- SDK,JDK,API的区别
- 【转】CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
- Yarn调度器和调度算法(FIFO、容量调度器 与 公平调度器)
- spring2.X(1)--新特性介绍
- java 中button和jbutton输出的按钮不一样_Java学习教程(基础)--Java开发环境搭建
- OpenCL: OpenCL快速入门教程
- Linux下ALSA驱动分析
- IDEA 设置类注释模板
- Resource is out of sync with the file system的解决办法
- 将OKRA-ERP配置成固定资产实物管理全过程
- 埃克森尔科技参与IEEE BDL SC数字身份标准工作组会议
- 【前端笔记】SCSS学习篇之一:基础入门
- 智能电视和网络电视有什么区别
- 基于Python进行人脸验证人脸识别综合开发
- 安卓应用App发布至各大平台汇总
- 通信对抗干扰技术简单综述与MATLAB仿真
- C++ 获取时间戳:下周一、月初、月中、月末
- freeswitch 显示主叫号码
- 2014-Unity3d基础入门到高级全套全系列视频教程
热门文章
- 一句话点评国内在产主流A级车
- 浏览器默认主页被篡改(chrome,IE)
- 算法(字符串)——重复的子字符串
- python求小于n的最大素数_小于或等于n的素数
- Prior-based Domain Adaptive Object Detection for Hazy and Rainy Conditions
- linux如何关闭netbios服务,Samba 'nmbd' NetBIOS名称服务守护程序拒绝服务漏洞
- 云片网实现短信验证码
- Kiwi for Gmail Mac(mac gmail邮箱客户端)
- 减肥 低热量食物和运动卡路里
- python自动点击网页按钮_python网页自动化操作