/*Source Code
Problem: 2104 User: 96655
Memory: 14808K Time: 1282MS
Language: G++ Result: Accepted
Source Code*/ #include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<vector>
#include<stack>
using namespace std;
const int maxn=;
struct node
{
int val[maxn],num[maxn];
};
struct Tree
{
int n,o[maxn];
node t[];
void init(int len)
{
n=len;
for(int i=; i<=n; i++)
{
scanf("%d",&o[i]);
t[].val[i]=o[i];
}
sort(o+,o+n+);
build(,n,);
}
void build(int l,int r,int dep)
{
if(l==r)return;
int m=(l+r)>>;
int lsame=m-l+,same=,ln=l,rn=m+;
for(int i=l; i<=r; i++)
if(t[dep].val[i]<o[m])--lsame;
for(int i=l; i<=r; i++)
{
if(i==l)t[dep].num[i]=;
else t[dep].num[i]+=t[dep].num[i-];
if(t[dep].val[i]<o[m])
++t[dep].num[i],t[dep+].val[ln++]=t[dep].val[i];
else if(t[dep].val[i]>o[m])
t[dep+].val[rn++]=t[dep].val[i];
else
{
++same;
{
if(lsame>=same)
++t[dep].num[i],t[dep+].val[ln++]=t[dep].val[i];
else t[dep+].val[rn++]=t[dep].val[i];
}
}
}
build(l,m,dep+);
build(m+,r,dep+);
}
int query(int st,int ed,int k,int l,int r,int dep)
{
if(l==r)return t[dep].val[l];
int lx,ly,rx,ry,m=(l+r)>>;
if(st==l)lx=;
else lx=t[dep].num[st-];
ly=t[dep].num[ed];
if(ly-lx>=k)
return query(l+lx,l+ly-,k,l,m,dep+);
else
{
rx=st-l-lx;
ry=ed-st+-(ly-lx);
return query(m++rx,m+rx+ry,k-(ly-lx),m+,r,dep+);
}
}
}tree;
int main()
{
int n,q;
while(~scanf("%d%d",&n,&q))
{
tree.init(n);
while(q--)
{
int l,r,k;
scanf("%d%d%d",&l,&r,&k);
int ans=tree.query(l,r,k,,n,);
printf("%d\n",ans);
}
}
return ;
}

num数组一定要初始化,但是不知为什么POJ没初始化就过了,HDU同样的题就必须初始化,反正加上初始化没有错

POJ2104 K-th Number 划分树 模板题啊的更多相关文章

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

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

  2. 主席树:POJ2104 K-th Number (主席树模板题)

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

  3. 【POJ 2104】 K-th Number 主席树模板题

    达神主席树讲解传送门:http://blog.csdn.net/dad3zz/article/details/50638026 2016-02-23:真的是模板题诶,主席树模板水过.今天新校网不好,没 ...

  4. SPOJ MKTHNUM & POJ 2104 - K-th Number - [主席树模板题]

    题目链接:http://poj.org/problem?id=2104 Description You are working for Macrohard company in data struct ...

  5. hdu 2665 划分树模板题(可作为模板)

    Kth number Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. [hdu2665]Kth number(划分树求区间第k大)

    解题关键:划分树模板题. #include<cstdio> #include<cstring> #include<algorithm> #include<cs ...

  7. [POJ2104] 区间第k大数 [区间第k大数,可持久化线段树模板题]

    可持久化线段树模板题. #include <iostream> #include <algorithm> #include <cstdio> #include &l ...

  8. poj2104(划分树模板)

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

  9. poj2104(划分树模板)

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

随机推荐

  1. css tricks

    http://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/ http://css-tricks.com/brows ...

  2. 关于Oracle数据库中SQL空值排序的问题

    在Oracle中进行查询排序时,如果排序字段里面有空值的情况下,排序结果可能会达不到自己想要的结果.   如 select * from tableTest order by VISITS desc ...

  3. 应该如何入门deep learning呢?从UFLDL开始!

    抱歉,大家,这里不是要分享如何学习deep learning,而是想要记录自己学习deep learning的小历程,算是给自己的一点小动力吧,希望各位业内前辈能够多多指教! 看到有网友提到,Andr ...

  4. 【规范】javascript 变量命名规则(转)

    匈牙利命名法 语法 变量名 = 类型 + 对象描述 类型指变量的类型 对象描述指对象名字全称或名字的一部分,要求有明确含义,命名要容易记忆容易理解. 通过在变量名前面添加相应小写字母的符号标示作为前缀 ...

  5. EhCache 分布式缓存/缓存集群(转)

    开发环境: System:Windows JavaEE Server:tomcat5.0.2.8.tomcat6 JavaSDK: jdk6+ IDE:eclipse.MyEclipse 6.6 开发 ...

  6. python:UnicodeEncodeError

    problem: (<type 'exceptions.UnicodeEncodeError'>, UnicodeEncodeError('ascii', u'[taobao_cocobe ...

  7. Visual Leak Detector 2.2.3 Visual C++内存检测工具

      Visual Leak Detector是一款免费的.健全的.开源的Visual C++内存泄露检测系统.相比Visual C++自带的内存检测机制,Visual Leak Detector可以显 ...

  8. HDU2697+DP

    dp[i][j]:从前i个中挑出某些且cost不超过j的最大val. dp[i][j]:应该有1到i-1的dp[k][j-?]来更新!! /* DP dp[i][j]:从前i个中挑出某些且cost不超 ...

  9. 跨平台的目录遍历实现方法(windows和linux已经测试)

    dirent.h是gcc下的一个头文件,在windows中是没有的.这个文件中封装了几个对目录进行操作函数: static DIR *opendir (const char *dirname);sta ...

  10. java List 去重(两种方式)

    方法一: 通过Iterator 的remove方法 Java代码  public void testList() { List<Integer> list=new ArrayList< ...