此代码同hdu2665改编
#include <iostream>
#include <cstdio>
#include<cstring>
#include <algorithm>
using namespace std; #define N 100500 #define MID ((l+r)>>1)
int a[N],s[N],t[][N],num[][N],n,m; void Build(int c,int l,int r)
{
int lm=MID-l+,lp=l,rp=MID+;
for(int i=l;i<=MID;i++)
lm-=s[i]<s[MID];
for(int i=l;i<=r;i++)
{
if( i==l )
num[c][i]=;
else
num[c][i]=num[c][i-];
if( t[c][i]==s[MID] )
{
if( lm )
{
lm--;
num[c][i]++;
t[c+][lp++]=t[c][i];
}
else
t[c+][rp++]=t[c][i];
}
else if( t[c][i]<s[MID] )
{
num[c][i]++;
t[c+][lp++]=t[c][i];
}
else
t[c+][rp++]=t[c][i];
}
if( l<r )
Build(c+,l,MID),Build(c+,MID+,r);
} int Query(int c,int l,int r,int ql,int qr,int k)
{
if( l==r )
return t[c][l];
int s,ss;
if( l==ql )
s=,ss=num[c][qr];
else
s=num[c][ql-],ss=num[c][qr]-num[c][ql-];
if( k<=ss )
return Query(c+,l,MID,l+s,l+s+ss-,k);
else
return Query(c+,MID+,r,MID++ql-l-s,MID++qr-l-s-ss,k-ss);
} int main()
{
scanf("%d%d",&n,&m);
memset(t,,sizeof(t));
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
s[i]=t[][i]=a[i];
}
sort(s+,s++n);
Build(,,n);
while( m-- )
{
int l,r,k;
scanf("%d%d%d",&l,&r,&k);
printf("%d\n",Query(,,n,l,r,k));
} return ;
}

划分树C++版百度百科模板的更多相关文章

  1. hdu 2665 Kth number(划分树模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=2665 [ poj 2104 2761 ]  改变一下输入就可以过 http://poj.org/problem? ...

  2. poj2104(划分树模板)

    poj2104 题意 给出一个序列,每次查询一个区间,要求告诉这个区间排序后的第k个数. 分析 划分树模板,O(mlogn). 建树.根据排序之后的数组,对于一个区间,找到中点的数,将整个区间分为左右 ...

  3. poj2104(划分树模板)

    poj2104 题意 给出一个序列,每次查询一个区间,要求告诉这个区间排序后的第k个数. 分析 划分树模板,O(mlogn). 建树.根据排序之后的数组,对于一个区间,找到中点的数,将整个区间分为左右 ...

  4. HDU-3743 Minimum Sum,划分树模板

    Minimum Sum 被这个题坑了一下午,原来只需找一个最中间的数即可,我以为是平均数. 题意:找一个数使得这个数和区间内所有数的差的绝对值最小.输出最小值. 开始用线段树来了一发果断T了,然后各种 ...

  5. VIJOS P1081 野生动物园 SBT、划分树模板

    [描述] cjBBteam拥有一个很大的野生动物园.这个动物园坐落在一个狭长的山谷内,这个区域从南到北被划分成N个区域,每个区域都饲养着一头狮子.这些狮子从北到南编号为1,2,3,…,N.每头狮子都有 ...

  6. poj 2104 (划分树模板)

    Description You are working for Macrohard company in data structures department. After failing your ...

  7. poj2104&&poj2761 (主席树&&划分树)主席树静态区间第k大模板

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 43315   Accepted: 14296 Ca ...

  8. 【线段树】【P3372】模板-线段树

    百度百科 Definition&Solution 线段树是一种log级别的树形结构,可以处理区间修改以及区间查询问题.期望情况下,复杂度为O(nlogn). 核心思想见百度百科,线段树即将每个 ...

  9. hdu2665 && poj2104划分树

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 47066   Accepted: 15743 Ca ...

随机推荐

  1. cf559C. Gerald and Giant Chess(容斥原理)

    题意 $h \times w$的网格,有$n$个障碍点, 每次可以向右或向下移动 求从$(1, 1)$到$(h, w)$不经过障碍点的方案数 Sol 容斥原理 从$(1, 1)$到$(h, w)$不经 ...

  2. vue从入门到开发--4--处理http请求

    一: 在main.js里面处理http请求模块,因为没有这个模块,所以需要先安装这个模块:npm install vue-resource --save 安装完毕之后,导入这个模块,并使用中间件将其使 ...

  3. Flask信号流程

    首先先我们来看看Flask里面的信号是什么样的,我们可以找到一个叫signals.py的文件 这里面是所有定义了的后面请求流程中会用到的信号 二.哪些地方用到了信号 1.请求app上下文时执行的,在执 ...

  4. JavaScript_1_简介

    1. JavaScript属于客户端脚本语言 2. JavaScript用来改进网页设计.验证表单.检测浏览器.创建cookies,以及更多的应用 a. 是为HTML设计者提供的一种编程工具 b. 可 ...

  5. spring 常用问题汇总

    2018.02.06 SpringMVC中StringHttpMessageConverter乱码处理 http://blog.csdn.net/wangyangbto/article/details ...

  6. chm文件帮助功能全解

    在winform中点击某个按钮弹出关于这个窗体的功能的具体解释文档方法如下: 第一步,使用chm编译工具修改chm每个文档的url 修改完成后保存确认能否打开, 如果不能就使用这个软件的转换功能把ch ...

  7. UVA821 PageHopping (Floyd)

    求所有点直接的平均最短距离,保存一下出现过的点,题目保证是所有点连通,Floyd求出最短路以后两个for统计一下. #include<bits/stdc++.h> using namesp ...

  8. 数据库web项目对数据库的操作

    1.0.JSTL与jsp实现对数据库的操作 MySql 数据库: create database if not exists CommodityDB; use CommodityDB; drop ta ...

  9. caffe实现多label输入(修改源码版)

    http://blog.csdn.net/u013010889/article/details/54614067 这个人的博客本身也相当好

  10. end和sep的使用方法

    end: 默认是换行'\n',表示以什么结尾,比如以, | \n 等 方法: 默认end = '\n' a b c 如果end = ' ' a b c sep: 默认是空格' ' 表示两个字符之间用什 ...