POJ 2104 K-th Number 主席树
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN = 1e5+5; int N,M;
int A[MAXN]; int has[MAXN];
int htot;
int get(int x){
int tt = lower_bound(has,has+htot,x)-has;
return tt+1;
}
int show(int x){
return has[x-1];
} struct Node{
int ls; int rs; int sum;
}tree[MAXN*30];
int root[MAXN];
int tot; int Ed;
int Build(int l,int r) {
int rt = tot++;
tree[rt].sum = 0;
if(l == r) return rt;
int m = (l+r) >>1;
tree[rt].ls = Build(l,m);
tree[rt].rs = Build(m+1,r);
return rt;
}
int Update(int pos,int num,int l,int r,int pre) {
int rt = tot++;
tree[rt] = tree[pre];
tree[rt].sum += num;
if(l == r) return rt;
int m = (l+r) >>1;
if(pos <= m) tree[rt].ls = Update(pos,num,l,m,tree[pre].ls);
else tree[rt].rs = Update(pos,num,m+1,r,tree[pre].rs);
return rt;
} int Qans;
void Query(int num,int l,int r,int rt1,int rt2) {
if(l == r) {
Qans = r; return;
}
int m = (l + r) >>1;
int tt = tree[tree[rt2].ls].sum - tree[tree[rt1].ls].sum;
if(tt >= num) Query(num,l,m,tree[rt1].ls,tree[rt2].ls);
else Query(num-tt, m+1, r, tree[rt1].rs,tree[rt2].rs);
}
void Debug(int l,int r,int rt){
printf("%d %d %d\n",l,r,tree[rt].sum);
if(l == r) {
return;
}
int m = (l+r) >>1;
Debug(l,m,tree[rt].ls); Debug(m+1,r,tree[rt].rs);
}
int main(){
while(~scanf("%d %d",&N,&M)) {
htot = 0;
for(int i = 1; i <= N; ++i) { scanf("%d",&A[i]); has[htot ++] = A[i]; }
sort(has,has+htot);
htot = unique(has, has+htot) - has;
Ed = htot; tot = 0; root[0] = Build(1,Ed);
for(int i = 1; i <= N; ++i) {
int tt = get(A[i]);
root[i] = Update(tt, 1, 1, Ed, root[i-1]);
}
// Debug(1,Ed,root[5]); printf("\n");
// for(int i = 1; i <= N; ++i) printf("%d ",root[i]); printf("\n"); for(int i = 1; i <= M; ++i) {
int a,b,c; scanf("%d %d %d",&a,&b,&c);
Query(c,1,Ed,root[a-1],root[b]);
printf("%d\n",show(Qans) );
}
}
return 0;
}
POJ 2104 K-th Number 主席树的更多相关文章
- 【POJ 2104】 K-th Number 主席树模板题
达神主席树讲解传送门:http://blog.csdn.net/dad3zz/article/details/50638026 2016-02-23:真的是模板题诶,主席树模板水过.今天新校网不好,没 ...
- 静态区间第k大(主席树)
POJ 2104为例(主席树入门题) 思想: 可持久化线段树,也叫作函数式线段树,也叫主席树(高大上). 可持久化数据结构(Persistent data structure):利用函数式编程的思想使 ...
- poj 2104 K-th Number 主席树+超级详细解释
poj 2104 K-th Number 主席树+超级详细解释 传送门:K-th Number 题目大意:给出一段数列,让你求[L,R]区间内第几大的数字! 在这里先介绍一下主席树! 如果想了解什么是 ...
- poj2104 k-th number 主席树入门讲解
poj2104 k-th number 主席树入门讲解 定义:主席树是一种可持久化的线段树 又叫函数式线段树 刚开始学是不是觉得很蒙逼啊 其实我也是 主席树说简单了 就是 保留你每一步操作完成之后 ...
- POJ 2104 K-th Number 主席树(区间第k大)
题目链接: http://poj.org/problem?id=2104 K-th Number Time Limit: 20000MSMemory Limit: 65536K 问题描述 You ar ...
- POJ 2104:K-th Number(主席树静态区间k大)
题目大意:对于一个序列,每次询问区间[l,r]的第k大树. 分析: 主席树模板题 program kthtree; type point=record l,r,s:longint; end; var ...
- POJ 2104 K-th Number ( 求取区间 K 大值 || 主席树 || 离线线段树)
题意 : 给出一个含有 N 个数的序列,然后有 M 次问询,每次问询包含 ( L, R, K ) 要求你给出 L 到 R 这个区间的第 K 大是几 分析 : 求取区间 K 大值是个经典的问题,可以使用 ...
- SPOJ MKTHNUM & POJ 2104 - K-th Number - [主席树模板题]
题目链接:http://poj.org/problem?id=2104 Description You are working for Macrohard company in data struct ...
- poj 2104 K-th Number(主席树 视频)
K-th Number 题意: 给你一些数,让你求一个区间内,第k大的数是多少. 题解: 主席树第一题,看的qsc视频写的,戳戳戳 学到了unique函数,他的作用是:把相邻的重复的放到后面,返回值是 ...
- Poj 2104 K-th Number(主席树&&整体二分)
K-th Number Time Limit: 20000MS Memory Limit: 65536K Case Time Limit: 2000MS Description You are wor ...
随机推荐
- BZOJ 1854: [Scoi2010]游戏 [连通分量 | 并查集 | 二分图匹配]
题意: 有$n \le 10^6$中物品,每种两个权值$\le 10^4$只能选一个,使得选出的所有权值从1递增,最大递增到多少 一开始想了一个奇怪的规定流量网络流+二分答案做法...然而我还不知道怎 ...
- BZOJ 2084: [Poi2010]Antisymmetry [Manacher]
2084: [Poi2010]Antisymmetry Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 609 Solved: 387[Submit] ...
- openvpn 客户端一键脚本安装
#!/bin/bash dir=/etc/openvpn#file=AD00012basepath=$(cd `dirname $0`; pwd)PACKAGE_DIR="${basepat ...
- LVS的DR设置测试
dir: ipvsadm -C 清空之前ipvsadm iptables -t nat -F 防火墙规则清空v rs1,rs2: vi /etc/sysconfig/network-scrip ...
- filezilla server客户端FTP连接不上解决
windows服务器上安装Filezilla server后,本地客户端连接不上.解决办法: 1.在防火墙把filezilla的 Filazilla server interface.exe 和Fil ...
- 使用Python管理数据库
使用Python管理数据库 这篇文章的主题是如何使用Python语言管理数据库,简化日常运维中频繁的.重复度高的任务,为DBA们腾出更多时间来完成更重要的工作.文章本身只提供一种思路,写的不是很全 ...
- 数组的toString方法
数组继承了object类的toString方法,数据类型将按照旧的格式打印,例如: int[] luckyNumbers = {2,3,5,7,11,13}; String s = "&qu ...
- SDP(8):文本式数据库-MongoDB-Scala基本操作
MongoDB是一种文本式数据库.与传统的关系式数据库最大不同是MongoDB没有标准的格式要求,即没有schema,合适高效处理当今由互联网+商业产生的多元多态数据.MongoDB也是一种分布式数据 ...
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 避免使用终结器,避免大对象,避免复制缓冲区
避免使用终结器 如果没有必要,是不需要实现一个终结器(Finalizer).终结器的代码主要是让GC回收非托管资源用.它会在GC完成标记对象为可回收后,放入一个终结器队列里,在由另外一个线程执行队列里 ...
- dubbo filter实现接口认证springboot idea
最近公司有业务需求,要对Dubbo接口调用者进行身份验证,验证通过才能调用,网上一些资料不够全面,遂整理了一下. 在provider方定义一个filter,需要实现com.alibaba.dubbo. ...