题目链接

发现区间按左端点排序后右端点也是单调的,所以扫一遍就行了,用权值线段树维护第\(k\)大

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
#define int long long
#define lc (p<<1)
#define rc (p<<1|1)
using namespace std; const int MAXN=2000010;
const int MAXM=500010; inline int read(){
int x=0,f=1; char c=getchar();
while(c<'0'){ if(c=='-') f=-1; c=getchar(); }
while(c>='0') x=x*10+c-'0',c=getchar();
return x*f;
} int n,m,a[MAXN],t[MAXN],cnt,num; struct Query{
int l,r,k,id;
} q[MAXM]; inline bool cmp(Query x,Query y){
return x.l<y.l;
} map<int,int> Map;
int rev[MAXN]; int tree[MAXN];
inline void update(int k,int d,int p=1,int l=1,int r=num){
if(l==r){
tree[p]+=d;
return;
}
int mid=(l+r)>>1;
if(k<=mid) update(k,d,lc,l,mid);
else update(k,d,rc,mid+1,r);
tree[p]=tree[lc]+tree[rc];
} inline int query(int k,int p=1,int l=1,int r=num){
if(l==r) return l;
int mid=(l+r)>>1;
if(tree[lc]>=k) return query(k,lc,l,mid);
else return query(k-tree[lc],rc,mid+1,r);
} int ans[MAXN]; signed main(){
n=read(); m=read();
for(int i=1;i<=n;++i)
a[i]=read(),t[++cnt]=a[i];
for(int i=1;i<=m;++i)
q[i].l=read(),q[i].r=read(),q[i].k=read(),q[i].id=i;
sort(q+1,q+1+m,cmp);
sort(t+1,t+1+cnt);
t[0]=t[1]-1;
for(int i=1;i<=cnt;++i)
if(t[i]!=t[i-1]) Map[t[i]]=++num,rev[num]=t[i];
int L=1,R=0;
for(int i=1;i<=m;++i){
while(R<q[i].r) update(Map[a[++R]],1);
while(L<q[i].l) update(Map[a[L++]],-1);
ans[q[i].id]=rev[query(q[i].k)];
}
for(int i=1;i<=m;++i)
printf("%lld\n",ans[i]);
return 0;
}

【luoguP1533】可怜的狗狗的更多相关文章

  1. 洛谷P1533 可怜的狗狗 [平衡树,FHQ_Treap]

    题目传送门 可怜的狗狗 题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都 ...

  2. AC日记——可怜的狗狗 洛谷 P1533

    可怜的狗狗 思路: 主席树第k大: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300001 #defin ...

  3. P1533 可怜的狗狗

    http://www.luogu.org/problem/show?pid=1533 题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗 ...

  4. luogu P1533 可怜的狗狗 |莫队+二分

    题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都有一个不同的漂亮值.漂亮 ...

  5. 【题解】Luogu P1533 可怜的狗狗

    原题传送门 莫队介绍,Splay介绍 离线的题目,莫队是不错的解决方法 先把询问排一下序 剩下就套一个莫队的板子 每来一只狗就把漂亮值插入平衡树 每去掉一只狗就把漂亮值从平衡树中删掉 每次查询查平衡树 ...

  6. Luogu P1533 可怜的狗狗

    题目链接:https://www.luogu.org/problemnew/show/P1533 没人写$fhq\ treap$做法,那我就补一篇qwq 看到这题第一时间想主席树,然后发现我还没学主席 ...

  7. [Luogu 1533] 可怜的狗狗

    平衡树,我用的SBT. 排一下序尽量减少操作次数. 第K大询问. 以及插入删除. #include <algorithm> #include <cstdio> #include ...

  8. P1533可怜的狗狗

    困死了,完全做不下去题 就当是对莫队最最基本的思想的一个复习叭(只有最最基本的思想,没有莫队) 传送 我们可以很容易的想到这题要用线段树. 60pts 此题要求某个区间里第K小的数,可以暴力的考虑对每 ...

  9. 关于dfs+剪枝第一篇:hdu1010

    最近进入了dfs关于剪枝方面的学习,遇到的第一道题就是hdu的1010.一道很基础的剪枝..可我不幸地wa了很多次(待会再解释wa的原因吧QAQ),首先我们来看一下题目. Problem Descri ...

随机推荐

  1. 5行代码带你实现一个js的打字效果

    (转载)原文链接:https://juejin.im/post/5ddf55835188257313541581 前言 有次看电影

  2. Java 中的"+"号(加法和连接)

    Java 中的"+"号(加法和连接) public class Test { public static void main(String[] args) { System.out ...

  3. thinkphp3.2 无法加载模块

    当使用thinkphp3.2时候 出现一个无法加载模块的错误的时候 不要慌张,只需要在根目录下的 index.php  加入一句话就可 define('BIND_MODULE','Home'); // ...

  4. 【C#进阶学习】泛型

    一.泛型引入 需求:传入一个类型(整型/日期/字符串或其他),打印出它的类型和内容. 1.初级版 public class CommonMethod { /// <summary> /// ...

  5. 深入解析 Go 中 Slice 底层实现

    原文: https://halfrost.com/go_slice/   切片是 Go 中的一种基本的数据结构,使用这种结构可以用来管理数据集合.切片的设计想法是由动态数组概念而来,为了开发者可以更加 ...

  6. bugku——宽带信息泄露(RouterPassView 查看路由器配置信息)

    题目地址:http://ctf.bugku.com/files/5986768ca8b96cead45aec16a88431b5/conf.bin 下载之后发现是个后缀名为bin的二进制文件,其实这个 ...

  7. How to prove that SAP CRM WebUI is a stateful application

    I create an enhancement in this function module to print out current session id: As long as I do not ...

  8. Kubernetes概念之deployment

    一整天一整天的坐在办公室,真的很~~~,懵圈中....,求解救. 本文通过<Kubernetes权威指南>的概念部分学习总结 Deployment作用 Deployment与RC的作用其实 ...

  9. Jpa的简介

    Jpa:是用于数据持久化的一组标准接口. 1.HelloWorld的编写 创建EntityManagerFactory 创建EntityManager 开启事务 数据持久化 提交事务 关闭Entity ...

  10. thinkphp整合系列之极验滑动验证码geetest

    给一个央企做官网,登录模块用的thinkphp验证码类.但是2019-6-10到12号,国家要求央企检验官网漏洞,防止黑客攻击,正直贸易战激烈升级时期,所以各事业单位很重视官网安全性,于是乎集团总部就 ...