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). 建树.根据排序之后的数组,对于一个区间,找到中点的数,将整个区间分为左右 ...
随机推荐
- cocos2dx游戏资源加密之XXTEA
在手机游戏当中,游戏的资源加密保护是一件很重要的事情. 我花了两天的时间整理了自己在游戏当中的资源加密问题,实现了跨平台的资源流加密,这个都是巨人的肩膀之上的. 大概的思路是这样的,游戏资源通过XXT ...
- 【BZOJ3524】 [Poi2014]Couriers
Description 给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. ...
- Oracle创建序列
CREATE SEQUENCE IF NOT EXISTS seq_fund_execute
- linux编程之线性表
#include"stdio.h" #define MAX 100 typedef struct List{ int length; int num[MAX]; }List_seq ...
- Mybatis+SpringMVC的项目环境搭建
一.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...
- OpenSessionInViewFilter 的配置及替代方案(转)
鸣谢:http://justsee.iteye.com/blog/1174999,http://blog.csdn.net/sunsea08/article/details/4545186 Sprin ...
- win8系统中PL/SQL Developer连接Oracle出现的问题
注意:所有软件最后不要安装在program files (x86)下 PL/SQL Developer显示Not logged on 以管理员的身份打开PL/SQL Developer 2. t ...
- URAL 1009 K-based numbers(DP递推)
点我看题目 题意 : K进制的N位数,不能有前导零,这N位数不能有连续的两个0在里边,问满足上述条件的数有多少个. 思路 : ch[i]代表着K进制的 i 位数,不含两个连续的0的个数. 当第 i 位 ...
- Hardwood Species
http://poj.org/problem?id=2418 #include<cstdio> #include<cstring> #include<string> ...
- 落叶枫桥LOGO
LOGO