poj 2104 K-th Number (主席树模板)
来源:互联网 发布:网上域名注册管理系统 编辑:程序博客网 时间:2024/06/05 14:27
传送门
// by spli#include<cstring>#include<cstdio>#include<algorithm>#include<iostream>using namespace std;const int N=200010;int n,m;struct node{ int id,v;}a[N];int mp[N];int r[N];struct seg{ int ls,rs; int siz;}t[N*40];int tot;bool cmp(node x,node y){ return x.v<y.v;}void update(int &pos,int L,int R,int v){ t[++tot]=t[pos];pos=tot; t[pos].siz++; if(L==R) return; int mid=(L+R)>>1; if(v<=mid) update(t[pos].ls,L,mid,v); else update(t[pos].rs,mid+1,R,v);}int query(int ll,int rr,int L,int R,int k){ if(L==R) return L; int s=t[t[rr].ls].siz-t[t[ll].ls].siz; int mid=(L+R)>>1; if(k<=s) return query(t[ll].ls,t[rr].ls,L,mid,k); else return query(t[ll].rs,t[rr].rs,mid+1,R,k-s);}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;++i) scanf("%d",&a[i].v),a[i].id=i; sort(a+1,a+1+n,cmp); for(int i=1;i<=n;++i) mp[a[i].id]=i;//保证离散化后各不相同,不能使用lower_bound for(int i=1;i<=n;++i) r[i]=r[i-1],update(r[i],1,n,mp[i]); int x,y,k; while(m--){ scanf("%d%d%d",&x,&y,&k); printf("%d\n",a[query(r[x-1],r[y],1,n,k)].v); } return 0;}
阅读全文
0 0
- poj 2104 K-th Number (主席树模板)
- POJ 2104 K-th Number 主席树模板题
- POJ 2104 K-th Number(模板主席树)
- [POJ 2104]K-th Number 主席树
- poj 2104 K-th Number (主席树)
- poj 2104 K-th Number【主席树】
- POJ 2104 K-th Number [主席树]
- POJ 2104 K-th Number 主席树
- 主席树 poj 2104 K-th Number
- POJ 2104 K-th Number 主席树
- POJ 2104 K-th Number(主席树)
- 【POJ 2104 K-th Number】+ 主席树
- 【POJ】2104 K-th Number 主席树
- POJ-2104:K-th Number(主席树)
- POJ 2104 K-th Number (主席树 || 划分树)
- POJ 2104 K-th Number (划分树 / 主席树)
- POJ 2104 K-th Number(主席树)
- POJ 2104 K-th Number(主席树)
- string的问题
- SDNU -- 1385.Problem A: XOR
- PullToFresh的使用
- nexus私服及其相关配置
- Spark 使用马尔可夫模型的智能邮件营销
- poj 2104 K-th Number (主席树模板)
- 学习笔记_算法_算法图解像小说一样有趣的算法入门书 all
- 神经网络-感知器
- ubuntu下从源码编译比特币(Bitcoin)客户端
- SpringMVC Controller接收参数总结
- Gulp入门安装及运行gulp
- Tools安装
- springmvc创建的基础
- 消费升级,凡普信要用一站式平台解决用户最大痛点