首先 \(k\) 大容易让我们想到 主席树&树套树&整体二分,而异或又让我们想到 01-Trie。

所以就有一个很明显的二分,二分一个 mid 看有多少个数不大于 mid。

然后发现 \(n\) 只有 \(1000\),所以可以暴力枚举第一维度,然后对 \(y\) 建 01-Trie,在 01-Trie 上查询即可,复杂度 \(O(nq\log^2V)\)。然而复杂度太高过不去

然而我们发现这个过程和主席树查找 \(k\) 大有点儿像。可是有多棵树啊?

学过 树状数组套权值树 的同学应该知道把根全部存起来,然后二分下去,树套树原本的三只 \(\log\) 就变成了 \(\log^2\)。

所以我们在这里也可以将 \(O(n)\) 个根存起来向下二分,感觉有点儿像树套树,又有点儿像整体二分。

最终的复杂度是 \(O(nq\log V)\) 的。

#include<cstdio>
const int M=3e5+5,INF=0x7fffffff;
int n,m,Q,tot,x[1005],y[M],root[M];
int q[1005],p[1005];
struct Node{
int sum,chi[2];
}t[M*35];
int Modify(int u,int x,int d=30){
int o=x>>d&1,id=++tot;
t[id]=t[u];++t[id].sum;
if(~d)t[id].chi[o]=Modify(t[u].chi[o],x,d-1);
return id;
}
int Query(int k,int l,int r,int L=0,int R=INF,int d=30){
if(L==R)return L;
register int i,o,sum=0,mid=(long long)L+R>>1;
for(i=l;i<=r;++i)o=x[i]>>d&1,sum+=t[t[p[i]].chi[o]].sum-t[t[q[i]].chi[o]].sum;
if(k<=sum){
for(i=l;i<=r;++i)o=x[i]>>d&1,p[i]=t[p[i]].chi[o^0],q[i]=t[q[i]].chi[o^0];
return Query(k,l,r,L,mid,d-1);
}
else{
for(i=l;i<=r;++i)o=x[i]>>d&1,p[i]=t[p[i]].chi[o^1],q[i]=t[q[i]].chi[o^1];
return Query(k-sum,l,r,mid+1,R,d-1);
}
}
signed main(){
register int i,j,k,L,R,ql,qr;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)scanf("%d",x+i);
for(i=1;i<=m;++i)scanf("%d",&k),root[i]=Modify(root[i-1],k);
scanf("%d",&Q);
for(i=1;i<=Q;++i){
scanf("%d%d%d%d%d",&L,&R,&ql,&qr,&k);
for(j=L;j<=R;++j)q[j]=root[ql-1],p[j]=root[qr];
printf("%d\n",Query((R-L+1)*(qr-ql+1)-k+1,L,R));
}
}

LGP5795题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 如何将VSCode配置上传到gitee账户,简单几步教你实现

    众所周知,VSCode是一款功能非常强大的代码编写软件,不仅开源免费,其插件商店也是非常广泛.非常之强大.借助这些插件我们可以配置各种语言环境,也可以运行各种代码. 但随之就有问题出现了,我们在更换设 ...

  2. Linux基础入门笔记

    今天带来Linux入门的一些基础的笔记,科班出身的同学们,Linux已经成为了必修课了,下面我带来关于Linux的相关入门知识以及Linux简单的介绍! Linux内核最初只是由芬兰人林纳斯·托瓦兹( ...

  3. suging闲谈-netty 的异步非阻塞IO线程与业务线程分离

    前言 surging 对外沉寂了一段时间了,但是作者并没有闲着,而是针对于客户的需要添加了不少功能,也给我带来了不少外快收益, 就比如协议转化,consul 的watcher 机制,JAVA版本,sk ...

  4. 基于containerd二进制部署k8s-v1.23.3

    文章目录 前言 k8s 组件 环境准备 创建目录 关闭防火墙 关闭selinux 关闭swap 开启内核模块 分发到所有节点 启用systemd自动加载模块服务 配置系统参数 分发到所有节点 加载系统 ...

  5. Java中Vo、Po等对象的解释

    PO:全称是 persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录. 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象. BO:全称是 busines ...

  6. 巧用阿里云同步k8s.gcr镜像

    问题 谷歌云镜像仓库:k8s.gcr.io 镜像拉取不下来 阿里云操作配置 注册阿里云账号:点击注册 右上角点击"控制台" 点击左上角 选择"容器镜像服务" 第 ...

  7. Wireshark教程之安装

    实验目的 1.工具介绍 2.主要应用 实验原理 安装wireshark 实验内容 1.网络管理员用来解决网络问题 2.网络安全工程师用来检测安全隐患 3.开发人员用来测试执行情况 4.学习网络协议 实 ...

  8. Json:Java对象和Json文本转换工具类

    Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类. 安装 下载源码 git clone https://github.com/njdi/durian.git 编译源码 cd ...

  9. Excel入门简单,想要进阶实属不易?推荐这个数据分析工具

    大数据时代,数据分析在我们的日常生活和工作中应用越来越广泛,不管是公司的行政.人事.销售.运营还是专业的数据分析师,都经常需要通过数据来发现业务问题,因此数据分析正逐渐成为职场通用能力. 说到数据分析 ...

  10. 将Android手机无线连接到Ubuntu实现唱跳Rap

    您想要将Android设备连接到Ubuntu以传输文件.查看Android通知.以及从Ubuntu桌面发送短信 – 你会怎么做?将文件从手机传输到PC时不要打电话给自己:使用GSConnect就可以. ...