尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

032.有序表之AVL树

032.有序表之AVL树
📅 发布时间:2026/6/18 23:48:03

模板

luogu P3369

luogu P5076

P5076需把INT_MIN换成-2147483647

#include<iostream>
#include<climits>
using namespace std;
const int N=1e5+5;
struct AVL{private:int cnt=0;int head=0;int key[N];int height[N];int left[N];int right[N];int size[N];int count[N];public:void up(int i){height[i]=max(height[left[i]],height[right[i]])+1;size[i]=count[i]+size[left[i]]+size[right[i]];}int leftRotate(int i){int r=right[i];right[i]=left[r];left[r]=i;up(i);up(r);return r;}int rightRotate(int i){int l=left[i];left[i]=right[l];right[l]=i;up(i);up(l);return l;}int maintain(int i){int lh=height[left[i]];int rh=height[right[i]];if(lh-rh>1){if(height[left[left[i]]]>=height[right[left[i]]]){i=rightRotate(i);}else{left[i]=leftRotate(left[i]);i=rightRotate(i);}}else if(rh-lh>1){if(height[right[right[i]]]>=height[left[right[i]]]){i=leftRotate(i);}else{right[i]=rightRotate(right[i]);i=leftRotate(i);}}return i;}void add(int num){head=add(head,num);}int add(int i,int num){if(i==0){key[++cnt]=num;count[cnt]=size[cnt]=height[cnt]=1;return cnt;}if(key[i]==num){count[i]++;}else if(key[i]>num){left[i]=add(left[i],num);}else{right[i]=add(right[i],num);}up(i);return maintain(i);}void remove(int num){if(rank(num)!=rank(num+1)){head=remove(head,num);}}int remove(int i,int num){if(key[i]<num){right[i]=remove(right[i],num);}else if(key[i]>num){left[i]=remove(left[i],num);}else{if(count[i]>1){count[i]--;}else{if(left[i]==0&&right[i]==0)return 0;else if(right[i]==0){i=left[i];}else if(left[i]==0){i=right[i];}else{int mostLeft=right[i];while(left[mostLeft]){mostLeft=left[mostLeft];}right[i]=removeMostLeft(right[i],mostLeft);left[mostLeft]=left[i];right[mostLeft]=right[i];i=mostLeft;}}}up(i);return maintain(i);}int removeMostLeft(int i,int mostLeft){if(i==mostLeft){return right[i];}else{left[i]=removeMostLeft(left[i],mostLeft);up(i);return maintain(i);}}int rank(int num){return small(head,num)+1;}int small(int i,int num){if(i==0)return 0;if(key[i]>=num){return small(left[i],num);}else{return size[left[i]]+count[i]+small(right[i],num);}}int index(int x){return index(head,x);}int index(int i,int x){if(size[left[i]]>=x)return index(left[i],x);else if(size[left[i]]+count[i]<x){return index(right[i],x-size[left[i]]-count[i]);}return key[i];}int pre(int num){return pre(head,num);}int pre(int i,int num){if(i==0)return INT_MIN;if(key[i]>=num){return pre(left[i],num);}else{return max(key[i],pre(right[i],num));}}int post(int num){return post(head,num);}int post(int i,int num){if(i==0)return INT_MAX;if(key[i]<=num){return post(right[i],num);}else{return min(key[i],post(left[i],num));}}void clean(){for(int i=1;i<=cnt;++i){key[i]=0;height[i]=0;left[i]=0;right[i]=0;count[i]=0;size[i]=0;}cnt=0;head=0;}
}avl;
I am the bone of my sword

相关新闻

  • Sonic数字人适合哪些行业?虚拟客服、网课讲师、短视频主角皆可
  • HuggingFace镜像网站对比:哪家更适合拉取VoxCPM-1.5-TTS-WEB-UI?
  • 文本转语音新突破:VoxCPM-1.5实现高效标记率6.25Hz

最新新闻

  • AI中转站成本真相:36倍价差背后的渠道经济学
  • 通达信缠论插件:让复杂的技术分析变得简单直观
  • 如何在5分钟内免费搭建你的AI桌面助手:开源协作工具的终极指南
  • Mermaid Live Editor:5分钟掌握免费在线图表绘制的终极指南
  • MSC8144AMC-S多DSP板卡硬件设计:以太网、TDM与RapidIO接口深度解析
  • 超大质量双黑洞系统:数值模拟与观测特征

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号