划分树

作者: 影踪派熊猫人武僧 | 来源:发表于2019-04-07 10:02 被阅读0次

include<bits/stdc++.h>

define int long long

define maxn 500000

using namespace std;
inline char get(){
static char buf[30000],p1=buf,p2=buf;
return p1==p2 && (p2=(p1=buf)+fread(buf,1,30000,stdin),p1==p2)?EOF:p1++;
}
inline int read(){
register char c=get();register int f=1,=0;
while(c>'9' || c<'0')f=(c=='-')?-1:1,c=get();
while(c<='9' && c>='0')
=(<<3)+(<<1)+(c^48),c=get();
return _
f;
}
int n,m;
int num[20][maxn],val[20][maxn],a[maxn];
void build(int id,int l,int r){
if(l==r)return;
int mid=(l+r)>>1;
int sameMid=0;
for(register int i=l;i<=r;i++){
if(a[i]==a[mid])sameMid++;
else if(a[i]>a[mid])break;
}
int cas_l=l,cas_r=mid+1;
for(register int i=l;i<=r;i++){
if(i==l)num[id][i]=0;
else num[id][i]=num[id][i-1];
if(val[id][i]<a[mid] || (sameMid>0 && val[id][i]==a[mid])){
val[id+1][cas_l++]=val[id][l];
num[id][i]++;
if(val[id][i]==a[mid])sameMid--;
else val[id+1][cas_r++]=val[id][i];
}
}
build(id+1,l,mid);
build(id+1,mid+1,r);
}
int query(int id,int l,int r,int x,int y,int k){
int mid=(l+r)>>1;
if(l==r)return val[id][r];
int fl=0;
if(l!=x)fl=num[id][x-1];
int cnt=num[id][y]-fl;
if(cnt>=k)return query(id+1,l,mid,l+fl,l+num[id][y]-1,k);
else{
int pos_r=mid+1+(x-l-fl);
return query(id+1,mid+1,r,pos_r,pos_r+y-x-cnt,k-cnt);
}
}
signed main(){
//freopen("1.txt","r",stdin);
n=read(),m=read();
for(register int i=1;i<=n;i++)a[i]=read(),val[0][i]=a[i];
sort(a+1,a+1+n);
build(0,1,n);
while(m--){
int l=read(),r=read(),k=read();
cout<<query(0,1,n,l,r,k)<<endl;
}
return 0;
}

相关文章

  • 划分树

    划分树是一种基于线段树的数据结构。主要用于快速求出(在log(n)的时间复杂度内)序列区间的第k大值。思路:划分树...

  • 划分树

    include define int long long define maxn 5...

  • 划分树详解

    定义:划分树是一种能够支持O(log n)时间静态查询区间第K最值的数据结构,可以认为是基于快速排序思想构建的一种...

  • 十大数据挖掘算法之CART回归树

    一、CART回归树概述 决策树算法的关键在于选择最佳划分特征及特征重最佳划分点位置,即划分算法。ID3决策树的划分...

  • 《机器学习入门》笔记 - 决策树

    决策树 计算香农熵 建一组假数据 划分数据集 寻找最好的划分方式 寻找最多数的标签 创建决策树 使用文本注解绘制节...

  • Python3入门机器学习 - 决策树

    信息熵 绘制决策树的决策边界 使用信息熵寻找最优划分 使用基尼系数进行划分 基尼系数的划分整体和信息熵是一样的,只...

  • 01-23

    今天看的是分类树,CART算法的决策树可以作为分类树或者回归树,通过寻找纯净的划分,引出纯度。而CART算法主干和...

  • 决策树(ID3 & C4.5 & CART)

    一. 导语: 决策树(Decision Tree)的思想是贪心(最优化分) 与 分治(子树划分)。构建决策树的目的...

  • 光影

    阳光为一棵棵的树 划分了明暗 分割了光阴 形成了风景

  • 决策树的不同划分方法

    ID3决策树算法 学习算法的重点在于如何选择最优划分属性。显然我们希望分支节点尽可能的属于同一个类--即希望节点的...

网友评论

      本文标题:划分树

      本文链接:https://www.haomeiwen.com/subject/nmvjiqtx.html