给定一个n的序列,有m个询问 每次询问求l-r 里面第k大的数字是什么

只有询问,没有修改

可以用归并树和划分树(我都没学过。。囧)

我是专门冲着弄主席树来的

对主席树的建树方式有点了解了,不过这题为什么是在主席树里面这么操作的 还是有点不懂,今天照着模板敲了一遍就打多校了

再研究吧

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=110010;
const int maxm=maxn*30;
int n,m,tot,s;
int A[maxn],t[maxn],T[maxn];
int c[maxm],lson[maxm],rson[maxm];
int build(int l,int r)
{
int rt=++tot;
c[rt]=0;
if (l>=r) return rt;
int mid=(l+r)>>1;
lson[rt]=build(l,mid);
rson[rt]=build(mid+1,r);
return rt;
}
int update(int rt,int pos,int val)
{
int newrt=++tot,tmp=newrt;
c[newrt]=c[rt]+val;
int l=1,r=s;
while (l<r)
{
int mid=(l+r)>>1;
if (pos<=mid){
r=mid;
lson[newrt]=++tot;rson[newrt]=rson[rt];
newrt=lson[newrt];rt=lson[rt];
}
else{
l=mid+1;
rson[newrt]=++tot;lson[newrt]=lson[rt];
newrt=rson[newrt];rt=rson[rt];
}
c[newrt]=c[rt]+val;
}
return tmp;
}
int query(int lrt,int rrt,int k)
{
int l=1,r=s;
while (l<r)
{
int mid=(l+r)>>1;
if (c[lson[lrt]]-c[lson[rrt]]>=k){
r=mid;
lrt=lson[lrt];
rrt=lson[rrt];
}
else
{
l=mid+1;
k-=c[lson[lrt]]-c[lson[rrt]];
lrt=rson[lrt];
rrt=rson[rrt];
}
}
return l;
}
int main()
{
while (scanf("%d%d",&n,&m)!=EOF)
{
//memset(c,0,sizeof c);
tot=0;
for (int i=1;i<=n;i++) scanf("%d",&A[i]),t[i]=A[i];
sort(t+1,t+1+n);
//t[0]=0;
s=unique(t+1,t+1+n)-t-1;
//cout<<s<<endl;
T[n+1]=build(1,s);
for (int i=n;i>=1;i--){
int pos=lower_bound(t+1,t+s+1,A[i])-t;
T[i]=update(T[i+1],pos,1);
}
while (m--)
{
int l,r,k;
scanf("%d%d%d",&l,&r,&k);
int ans=query(T[l],T[r+1],k);
printf("%d\n",t[ans]);
}
}
return 0;
}

  

POJ 2104 求序列里第K大 主席树裸题的更多相关文章

  1. POJ 2104(K-th Number-区间第k大-主席树)

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 31790   Accepted: 9838 Cas ...

  2. 【POJ】2104 K-th Number(区间k大+主席树)

    http://poj.org/problem?id=2104 裸题不说.主席树水过. #include <cstdio> #include <iostream> #includ ...

  3. POJ-2104-K-th Number(区间第K大+主席树模板题)

    Description You are working for Macrohard company in data structures department. After failing your ...

  4. 计蒜客 38229.Distance on the tree-1.树链剖分(边权)+可持久化线段树(区间小于等于k的数的个数)+离散化+离线处理 or 2.树上第k大(主席树)+二分+离散化+在线查询 (The Preliminary Contest for ICPC China Nanchang National Invitational 南昌邀请赛网络赛)

    Distance on the tree DSM(Data Structure Master) once learned about tree when he was preparing for NO ...

  5. [POJ 2104]K-th Number【模板】(主席树)

    题目背景 这是个非常经典的主席树入门题——静态区间第K小 数据已经过加强,请使用主席树.同时请注意常数优化 题目描述 如题,给定N个正整数构成的序列,将对于指定的闭区间查询其区间内的第K小值. 输入输 ...

  6. POJ 2104 静态找区间第k大

    静态区间第k大的问题,往往可以利用主席树来解决 这是主席树的第一道题 主席树大概可以理解为在n个节点上都建立一棵线段树,但是想想会超出内存 每一个节点保存的线段树都记录当前整段前缀区间的信息 但是因为 ...

  7. Count on a tree(SPOJ COT + 树上第k大 + 主席树 + LCA)

    题目链接:https://www.spoj.com/problems/COT/en/ 题目: 题意: 给你一棵有n个节点的树,求节点u到节点v这条链上的第k大. 思路: 我们首先用dfs进行建题目给的 ...

  8. 主席树----POJ 2104(主席树裸题)(转)

    首先来介绍一下我们需求:给你n个数,多次问你某个区间内的第k小是哪个数 主席树: 主席树的全名应该是 函数式版本的线段树.加上附带的一堆 technology.. ..总之由于原名字太长了,而且 “主 ...

  9. HDU2665 求区间第K大 主席树

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2665 代码: //#include<bits/stdc++.h> #include< ...

随机推荐

  1. windows服务使用和控制启停

    https://www.cnblogs.com/mq0036/p/7875864.html

  2. Python 数据的输入

    一.单个输入 a=input("输入提示语句")#默认a的类型是字符串 b=input() 二.一行输入两个/三个数据,数据之间用空格间隔开 #a,b的数据类型都是整数 a,b=m ...

  3. pygame学习的第一天

    pygame最小开发框架: import pygame, sys pygame.init() screen = pygame.display.set_mode((600, 480)) pygame.d ...

  4. WebView使用详解(二)——WebViewClient与常用事件监听

      登录|注册     关闭 启舰 当乌龟有了梦想……       目录视图 摘要视图 订阅 异步赠书:Kotlin领衔10本好书      免费直播:AI时代,机器学习如何入门?      程序员8 ...

  5. VUE 动态切换列表active样式

    参考VUE官方文档样式绑定 https://cn.vuejs.org/v2/guide/class-and-style.html 需求是动态加载出来了所有菜单列表,点击其中一个li元素改变这个元素的背 ...

  6. SystemVerilog基本语法总结(中)

    Systemverilog 语法总结(中) 上一个博客分享了SV基本的概念,这一博客继续分享,等下一个博客分享一个公司的验证的笔试题目. l 事件 背景: Verilog中当一个线程在一个事件上发生阻 ...

  7. luogu P2765 魔术球问题

    题目中没有说球的上限是多少,只告诉了柱子,那么我们就应该以柱子为界去增加球,考虑将每两个能组成完全平方数的点连边,就形成了一个DAG(有向无环图),由于是DAG,可以转换为最小覆盖问题,即最多有n条路 ...

  8. 关闭Hyper-V后,天翼校园宽带(Netkeeper)依旧显示Sorry, this application cannot run under a Virtual Machin的解决方法

    环境: win10专业版,版本1909 经过: 尝试了一下win10 更新后的沙盒系统,当时开启了沙盒,但是未打开Hyper-V,沙盒正常运行. 第二次开机后天翼校园宽带(Netkeeper)显示So ...

  9. springboot项目启动报错 Failed to configure a DataSource: 'url' attribute is not specified and no embedde

    参考:https://blog.csdn.net/Coyotess/article/details/80637837

  10. YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)

    背景: 最近在研究音视频,了解YUV这样的格式对于音视频开发比较重要. 虽然这篇文章大部分是转载别人的,但是经过了校对以后,重新排版并补充了一部分内容   概览: 之所以提出yuv格式的原因,是为了解 ...