题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6621

题意为求区间[l,r]内第k小|a[i]-p|的值。

可以二分答案,如果二分的值为x,则判断区间[l,r]内是否有k个数在[p-x,p+x]范围内。所以就用主席树搞一下。

 #include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#define lson l, mid, i<<1
#define rson mid + 1, r, i<<1|1
using namespace std;
typedef long long ll;
const int maxn = 1e6 + ;
int root[maxn], rs[maxn * ], ls[maxn * ], val[maxn * ];
int cnt;
void update(int k, int l, int r, int &i) {
val[++cnt] = val[i] + , ls[cnt] = ls[i], rs[cnt] = rs[i];
i = cnt;
if (l == r)
return;
int mid = l + r >> ;
if (k <= mid)
update(k, l, mid, ls[i]);
else
update(k, mid + , r, rs[i]);
}
int query(int u, int v, int L, int R, int l, int r) {
if (L <= l && r <= R)
return val[u] - val[v];
int mid = l + r >> ;
int ans = ;
if (L <= mid)
ans += query(ls[u], ls[v], L, R, l, mid);
if (R > mid)
ans += query(rs[u], rs[v], L, R, mid + , r);
return ans;
}
int check(int L, int R, int p, int x) {
int l = max(p - x, ), r = min(p + x, (int)1e6);
return query(root[R], root[L - ], l, r, , 1e6);
}
int main() {
int t;
scanf("%d", &t);
while (t--) {
int n, m, x, cnt = ;
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i++) {
scanf("%d", &x);
root[i] = root[i - ];
update(x, , 1e6, root[i]);
}
int ans = , L, R, p, k;
for (int i = ; i <= m; i++) {
scanf("%d%d%d%d", &L, &R, &p, &k);
L ^= ans, R ^= ans, p ^= ans, k ^= ans;
int l = , r = 1e6;
while (l <= r) {
int mid = l + r >> ;
int w = check(L, R, p, mid);
if (w >= k) {
r = mid - ;
ans = mid;
}
else
l = mid + ;
}
printf("%d\n", ans);
}
}
}

[2019杭电多校第四场][hdu6621]K-th Closest Distance(主席树)的更多相关文章

  1. 2019杭电多校第四场hdu6621 K-th Closest Distance(二分答案+主席树)

    K-th Closest Distance 题目传送门 解题思路 二分答案+主席树 先建主席树,然后二分答案mid,在l和r的区间内查询[p-mid, p+mid]的范围内的数的个数,如果大于k则说明 ...

  2. [2019杭电多校第四场][hdu6623]Minimal Power of Prime

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6623 题目大意为求一个数的唯一分解的最小幂次.即120=23*31*51则答案为1. 因为数字太大不能 ...

  3. [2019杭电多校第四场][hdu6616]Divide the Stones

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6616 题意是说n个数分别为1-n,将n个数分成k堆,能否满足每堆个数相等,数值之和相等.保证n%k=0 ...

  4. [2019杭电多校第四场][hdu6614]AND Minimum Spanning Tree(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6614 题目大意是有一张n个点的完全图,n个点点权为1-n,边权为两点点权按位与(&).求最小生 ...

  5. 2019杭电多校第四场hdu6623 Minimal Power of Prime

    Minimal Power of Prime 题目传送门 解题思路 先打\(N^\frac{1}{5}\)内的素数表,对于每一个n,先分解\(N^\frac{1}{5}\)范围内的素数,分解完后n变为 ...

  6. 杭电多校第四场 Problem K. Expression in Memories 思维模拟

    Problem K. Expression in Memories Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262 ...

  7. [2019杭电多校第五场][hdu6625]three arrays(01字典树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6625 大意为给你两个数组a和b,对应位置异或得到c数组,现在可以将a,b数组从新排序求c数组,使得字典 ...

  8. 杭电多校第四场 E Matrix from Arrays

    Problem E. Matrix from Arrays Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 ...

  9. 2019杭电多校第七场 HDU - 6656 Kejin Player——概率&&期望

    题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $ ...

随机推荐

  1. php内核之数组

    1.zend_hash_num_elements 获取数组元素个数.宏定义如下: #define zend_hash_num_elements(ht) \ (ht)->nNumOfElement ...

  2. 2019年8月12日~8月18日 第七周JAVA学习总结

    本周主要完成了PTA代码编写的任务,将报告也完成了,但是由于同学聚会比较多所以JAVA的学习比较少,也没有学习统一建模语言.用在编程的时间平均每天5个小时,用在JAVA学习上平均每天1个小时,用在解决 ...

  3. sql视频学习关键笔记(自用记单词与学习用)

    sql字段类型 numeric(18,3)-18位整数加3位小数点(货币计量最好选这类型) sql关键字 insert. update. delete alter grant 授权. revoke 回 ...

  4. 关于sword框架浏览器上方小图标的修改

    sword框架默认有一个document.ejs文件,可以导出html模板(找了很久没找到index.html,哈哈哈),里面有一行代码 这个href就是代表着浏览器上方图标的路径. 在public文 ...

  5. vs code添加到鼠标右键

    首先在页面上新建个文本文件,然后改名和后缀为 add.reg 然后把下面的代码放到里面去,修改路径,然后直接运行就可以了 (路径就是vscode安装的目录) Windows Registry Edit ...

  6. 5433. 【NOIP2017提高A组集训10.28】图

    题目描述 Description 有一个n个点A+B条边的无向连通图,有一变量x,每条边的权值都是一个关于x的简单多项式,其中有A条边的权值是k+x,另外B条边的权值是k-x,如果只保留权值形如k+x ...

  7. 接口返回buffer的16进制数据如何转换

    我们请求接口数据经常会看到buffer数据,这是我们可以使用data.toString()就可以啦~

  8. Java——类的继承、访问控制

    [继承] <1>Java只支持单继承,不支持多继承. <2>继承父类的私有成员变量,只有所有权,没有使用权.   [继承中的构造方法]

  9. CodeForces 1198D 1199F Rectangle Painting 1

    Time limit 1000 ms Memory limit 262144 kB 解题思路 一堆循环嵌套的那种dp,不好想.但是可以搜啊,很暴力的.记忆化一下就好. 我们定义搜索函数\(\text{ ...

  10. tomcat安全配置参考

    0x01 基本配置 1 删除默认目录 安装完tomcat后,删除$CATALINA_HOME/webapps下默认的所有目录文件  rm -rf /srv/apache-tomcat/webapps/ ...