博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
主席树(区间第k小)
阅读量:6900 次
发布时间:2019-06-27

本文共 801 字,大约阅读时间需要 2 分钟。

//主席树 权值线段树+可持久化 //权值线段树:在此处指各个数字在某个区间内出现的次数 //那么第一棵权值线段树会记录[1,1]的数字出现次数 //第n棵权值线段树会记录[1,n]的数字出现次数 //例:数列为110001//第一棵权值线段树记录为tree1[0]=0 tree1[1]=1//第二棵权值线段树记录为tree2[0]=0 tree2[1]=2//第六棵权值线段树记录为tree6[0]=3 tree6[1]=3//那么要求区间为[3,5]的数字出现次数可拿第五棵权值线段树减去第(三减一)棵权值线段树 //此处运用前缀和思想 //将多棵权值线段树的公共点合为一个点可减少空间复杂度 //求区间第k小即可求出区间数字出现次数后递归操作 #include
#include
#include
#include
#include
#include
using namespace std;int n,m,cnt,b[200001],root[200001];//b[]离散化后的值 root[]根的编号 struct uio{ int num,id;}a[200001];//离散化辅助结构体 struct rty{ int ls,rs,siz;//左儿子,右儿子,区间元素个数 }tree[5000001];//权值线段树 递增使得左儿子表示的值小于右儿子表示的值 bool cmp(uio x,uio y){ return x.num

 

转载于:https://www.cnblogs.com/water-radish/p/9280887.html

你可能感兴趣的文章
数据库防火墙DBShield安装
查看>>
sudo with no password
查看>>
Windows 局域网ping获取设备IP
查看>>
使用蓝图来扩展编辑器
查看>>
USACO题目——Transformations
查看>>
除了 UCAN 发布的鹿班和普惠体,这些设计工具也来自阿里
查看>>
转载----Python正则表达式指南
查看>>
.Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
查看>>
HDU 1394 Minimum Inversion Number 线段树
查看>>
Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
查看>>
ssm框架整合
查看>>
C/C++里自带提供的整数进制转换的几种方式(转载)
查看>>
JAVA类加载顺序
查看>>
数据结构复习
查看>>
JSONPlaceholder - 免费的在线REST服务(提供测试用的HTTP请求假数据)
查看>>
今天购买了一个云服务器
查看>>
C#以管理员身份运行程序
查看>>
关于学习uCOS-II
查看>>
BZOJ3572:[HNOI2014]世界树——题解
查看>>
inline 函数
查看>>