<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)相关推荐

  1. 算法复习——割点(洛谷3388)

    题目: 题目背景 割点 题目描述 给出一个n个点,m条边的无向图,求图的割点. 输入输出格式 输入格式: 第一行输入n,m 下面m行每行输入x,y表示x到y有一条边 输出格式: 第一行输出割点个数 第 ...

  2. 算法刷题【洛谷P1593】因子和(附等比数列求和公式推导)

    异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...

  3. 算法刷题【洛谷U193902】橡皮泥

    异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...

  4. 洛谷P3369 普通平衡树

    刚学平衡树,分别用了Splay和fhq-treap交了一遍. 这是Splay的板子,貌似比较短? Splay #include <iostream> #include <cstdio ...

  5. 【洛谷P3369】 (模板)普通平衡树

    https://www.luogu.org/problemnew/show/P3369 Splay模板 1 #include<iostream> 2 #include<cstdio& ...

  6. 【洛谷P3369】普通平衡树(splay)

    emmmmm直接丢代码了 #include<iostream> #include<cstdio> #include<cstring> #include<str ...

  7. 洛谷P3369 【模板】普通平衡树(STL做法:vectormultiset)

    problem solution1 - AC vector可以AC.lower_bound找第一个大于等于x的,upper_bound找第一个大于x的. #include<bits/stdc++ ...

  8. 二分算法:平均值(洛谷 UVA1451)

    解析 这道题寻找平均值的max,答案明显具有单调性,所以采用二分算法 从0到1不断取中点mid作为平均值的可能点,看是否存在不短于l的数列均值>=mid不难得到以下代码: double st=0 ...

  9. 动态规划算法练习:蓝桥杯,洛谷的传纸条游戏的三种解法

    目录 方法一 方法二 方法三 方法一 package extraExercise; /*算法训练 传纸条描述小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排 ...

  10. #洛谷#滑稽#编程版『达拉崩吧』

    编程版『达拉崩吧 』 很久很久以前 算法突然出现 带来RE 带走了AC又消失不见 编程十分危险 世间谁最勇敢 一位神犇赶来 大声喊 我要 写出最高的树 打出最大的表 编出最长的代码 把AC带回到面前 ...

最新文章

  1. GC之二--GC是如何回收时的判断依据、shallow(浅) size、retained(保留) size、Deep(深)size...
  2. SDK,JDK,API的区别
  3. 【转】CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
  4. Yarn调度器和调度算法(FIFO、容量调度器 与 公平调度器)
  5. spring2.X(1)--新特性介绍
  6. java 中button和jbutton输出的按钮不一样_Java学习教程(基础)--Java开发环境搭建
  7. OpenCL: OpenCL快速入门教程
  8. Linux下ALSA驱动分析
  9. IDEA 设置类注释模板
  10. Resource is out of sync with the file system的解决办法
  11. 将OKRA-ERP配置成固定资产实物管理全过程
  12. 埃克森尔科技参与IEEE BDL SC数字身份标准工作组会议
  13. 【前端笔记】SCSS学习篇之一:基础入门
  14. 智能电视和网络电视有什么区别
  15. 基于Python进行人脸验证人脸识别综合开发
  16. 安卓应用App发布至各大平台汇总
  17. 通信对抗干扰技术简单综述与MATLAB仿真
  18. C++ 获取时间戳:下周一、月初、月中、月末
  19. freeswitch 显示主叫号码
  20. 2014-Unity3d基础入门到高级全套全系列视频教程

热门文章

  1. 一句话点评国内在产主流A级车
  2. 浏览器默认主页被篡改(chrome,IE)
  3. 算法(字符串)——重复的子字符串
  4. python求小于n的最大素数_小于或等于n的素数
  5. Prior-based Domain Adaptive Object Detection for Hazy and Rainy Conditions
  6. linux如何关闭netbios服务,Samba 'nmbd' NetBIOS名称服务守护程序拒绝服务漏洞
  7. 云片网实现短信验证码
  8. Kiwi for Gmail Mac(mac gmail邮箱客户端)
  9. 减肥 低热量食物和运动卡路里
  10. python自动点击网页按钮_python网页自动化操作