【luoguP1533】可怜的狗狗
发现区间按左端点排序后右端点也是单调的,所以扫一遍就行了,用权值线段树维护第\(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】可怜的狗狗的更多相关文章
- 洛谷P1533 可怜的狗狗 [平衡树,FHQ_Treap]
题目传送门 可怜的狗狗 题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都 ...
- AC日记——可怜的狗狗 洛谷 P1533
可怜的狗狗 思路: 主席树第k大: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300001 #defin ...
- P1533 可怜的狗狗
http://www.luogu.org/problem/show?pid=1533 题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗 ...
- luogu P1533 可怜的狗狗 |莫队+二分
题目背景 小卡由于公务需要出差,将新家中的狗狗们托付给朋友嘉嘉,但是嘉嘉是一个很懒的人,他才没那么多时间帮小卡喂狗狗. 题目描述 小卡家有N只狗,由于品种.年龄不同,每一只狗都有一个不同的漂亮值.漂亮 ...
- 【题解】Luogu P1533 可怜的狗狗
原题传送门 莫队介绍,Splay介绍 离线的题目,莫队是不错的解决方法 先把询问排一下序 剩下就套一个莫队的板子 每来一只狗就把漂亮值插入平衡树 每去掉一只狗就把漂亮值从平衡树中删掉 每次查询查平衡树 ...
- Luogu P1533 可怜的狗狗
题目链接:https://www.luogu.org/problemnew/show/P1533 没人写$fhq\ treap$做法,那我就补一篇qwq 看到这题第一时间想主席树,然后发现我还没学主席 ...
- [Luogu 1533] 可怜的狗狗
平衡树,我用的SBT. 排一下序尽量减少操作次数. 第K大询问. 以及插入删除. #include <algorithm> #include <cstdio> #include ...
- P1533可怜的狗狗
困死了,完全做不下去题 就当是对莫队最最基本的思想的一个复习叭(只有最最基本的思想,没有莫队) 传送 我们可以很容易的想到这题要用线段树. 60pts 此题要求某个区间里第K小的数,可以暴力的考虑对每 ...
- 关于dfs+剪枝第一篇:hdu1010
最近进入了dfs关于剪枝方面的学习,遇到的第一道题就是hdu的1010.一道很基础的剪枝..可我不幸地wa了很多次(待会再解释wa的原因吧QAQ),首先我们来看一下题目. Problem Descri ...
随机推荐
- 5行代码带你实现一个js的打字效果
(转载)原文链接:https://juejin.im/post/5ddf55835188257313541581 前言 有次看电影
- Java 中的"+"号(加法和连接)
Java 中的"+"号(加法和连接) public class Test { public static void main(String[] args) { System.out ...
- thinkphp3.2 无法加载模块
当使用thinkphp3.2时候 出现一个无法加载模块的错误的时候 不要慌张,只需要在根目录下的 index.php 加入一句话就可 define('BIND_MODULE','Home'); // ...
- 【C#进阶学习】泛型
一.泛型引入 需求:传入一个类型(整型/日期/字符串或其他),打印出它的类型和内容. 1.初级版 public class CommonMethod { /// <summary> /// ...
- 深入解析 Go 中 Slice 底层实现
原文: https://halfrost.com/go_slice/ 切片是 Go 中的一种基本的数据结构,使用这种结构可以用来管理数据集合.切片的设计想法是由动态数组概念而来,为了开发者可以更加 ...
- bugku——宽带信息泄露(RouterPassView 查看路由器配置信息)
题目地址:http://ctf.bugku.com/files/5986768ca8b96cead45aec16a88431b5/conf.bin 下载之后发现是个后缀名为bin的二进制文件,其实这个 ...
- 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 ...
- Kubernetes概念之deployment
一整天一整天的坐在办公室,真的很~~~,懵圈中....,求解救. 本文通过<Kubernetes权威指南>的概念部分学习总结 Deployment作用 Deployment与RC的作用其实 ...
- Jpa的简介
Jpa:是用于数据持久化的一组标准接口. 1.HelloWorld的编写 创建EntityManagerFactory 创建EntityManager 开启事务 数据持久化 提交事务 关闭Entity ...
- thinkphp整合系列之极验滑动验证码geetest
给一个央企做官网,登录模块用的thinkphp验证码类.但是2019-6-10到12号,国家要求央企检验官网漏洞,防止黑客攻击,正直贸易战激烈升级时期,所以各事业单位很重视官网安全性,于是乎集团总部就 ...