POJ2104 K-th Number 划分树 模板题啊
/*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 划分树 模板题啊的更多相关文章
- hdu 2665 Kth number(划分树模板)
http://acm.hdu.edu.cn/showproblem.php?pid=2665 [ poj 2104 2761 ] 改变一下输入就可以过 http://poj.org/problem? ...
- 主席树:POJ2104 K-th Number (主席树模板题)
K-th Number Time Limit: 20000MS Memory Limit: 65536K Total Submissions: 44952 Accepted: 14951 Ca ...
- 【POJ 2104】 K-th Number 主席树模板题
达神主席树讲解传送门:http://blog.csdn.net/dad3zz/article/details/50638026 2016-02-23:真的是模板题诶,主席树模板水过.今天新校网不好,没 ...
- SPOJ MKTHNUM & POJ 2104 - K-th Number - [主席树模板题]
题目链接:http://poj.org/problem?id=2104 Description You are working for Macrohard company in data struct ...
- hdu 2665 划分树模板题(可作为模板)
Kth number Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- [hdu2665]Kth number(划分树求区间第k大)
解题关键:划分树模板题. #include<cstdio> #include<cstring> #include<algorithm> #include<cs ...
- [POJ2104] 区间第k大数 [区间第k大数,可持久化线段树模板题]
可持久化线段树模板题. #include <iostream> #include <algorithm> #include <cstdio> #include &l ...
- poj2104(划分树模板)
poj2104 题意 给出一个序列,每次查询一个区间,要求告诉这个区间排序后的第k个数. 分析 划分树模板,O(mlogn). 建树.根据排序之后的数组,对于一个区间,找到中点的数,将整个区间分为左右 ...
- poj2104(划分树模板)
poj2104 题意 给出一个序列,每次查询一个区间,要求告诉这个区间排序后的第k个数. 分析 划分树模板,O(mlogn). 建树.根据排序之后的数组,对于一个区间,找到中点的数,将整个区间分为左右 ...
随机推荐
- django开发框架-view & template
django框架的主要模型是MVT,Model模型,View视图,Template模板,基于基本的HttpRequest方式. django支持的数据库有四种:PostgreSQL,MySQL, Or ...
- WebUploader API
Uploader new Uploader( opts ) ⇒ Uploader 上传入口类. var uploader = WebUploader.Uploader({ swf: 'path_of_ ...
- Qt的gzip模块实现
一直没找到Qt中方便的gzip模块,于是自己动手,调用zlib模块实现了一份. 目标: 1.gzip的压缩与解压 2.内存中操作 3.方便的Qt接口 实现分析: gzip 压缩算法为 defla ...
- Delphi XE5 android popumenu
实现下拉菜单式的效果,本代码是国外的网站上下载的..,不是原创. 源码下载地址 : http://files.cnblogs.com/nywh2008/popumenu.rar
- Clojure语法学习-循环
do和块语句 在Scala中,花括号{}括起来的语句构成一个block,它的值就是最后一个语句的值. scala> val a = { | println("a") | 1} ...
- poj 2065 SETI 高斯消元
看题就知道要使用高斯消元求解! 代码如下: #include<iostream> #include<algorithm> #include<iomanip> #in ...
- 李洪强iOS开发之OC[018]对象和方法之间的关系
// // main.m // 18 - 对象和方法之间的关系 // // Created by vic fan on 16/7/14. // Copyright © 2016年 李洪强. A ...
- IIS7 发布mvc3.0
Windows7系统和我们见面已经有一段时间了,在我们经过一段时间熟悉了她的新鲜好玩儿的功能之后,也许我们该静下心来想一下怎么用她做一些与学习有 关的事情,从Windows7的第一个试用版到现在的零售 ...
- PHP集成支付宝快速实现充值功能
http://blog.lixiphp.com/php-alipay-fast-chongzhi/#axzz2tOypIl4r
- latex 写作
一.下载:http://www.ctex.org/CTeXDownload 二.bst文件的作用 在tex文件调用bib时,如 \bibliographystyle{Science} \bibliog ...