题意及思路:https://blog.csdn.net/tianyizhicheng/article/details/90369491

代码:

#include <bits/stdc++.h>
#define lowbit(x) (x & (-x))
using namespace std;
const int maxn = 30010;
int c[maxn * 3], num[maxn], b[maxn * 3], lb[maxn], rb[maxn], a[maxn];
int ans[maxn], tot;
struct Query {
int l, r, id;
bool operator < (const Query& rhs) const {
if(num[l] == num[rhs.l]) return r < rhs.r;
return num[l] < num[rhs.l];
}
};
Query q[maxn];
void add(int x, int y) {
for (; x <= tot; x += lowbit(x)) {
c[x] += y;
}
}
int query(int x) {
int ans = 0;
for (; x; x -= lowbit(x)) {
ans += c[x];
}
return ans;
}
int main() {
int n, m, k;
scanf("%d%d%d", &n, &m, &k);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
b[++tot] = a[i], b[++tot] = a[i] + k, b[++tot] = a[i] - k - 1;
}
sort(b + 1, b + 1 + tot);
tot = unique(b + 1, b + 1 + tot) - (b + 1);
for (int i = 1; i <= n; i++) {
lb[i] = lower_bound(b + 1, b + 1 + tot, a[i] - k - 1) - b;
rb[i] = lower_bound(b + 1, b + 1 + tot, a[i] + k) - b;
a[i] = lower_bound(b + 1, b + 1 + tot, a[i]) - b;
}
for (int i = 1; i <= m; i++) {
scanf("%d%d", &q[i].l, &q[i].r);
q[i].id = i;
}
int len = sqrt(n);
for (int i = 1; i <= n; i++) {
num[i] = (i - 1) / len + 1;
}
sort(q + 1, q + 1 + m);
int l = q[1].l, r = q[1].l - 1, sum = 0;
for (int i = 1; i <= m; i++) {
while(r < q[i].r) {
r++;
sum += query(rb[r]) - query(lb[r]);
add(a[r], 1);
}
while(l > q[i].l) {
l--;
sum += query(rb[l]) - query(lb[l]);
add(a[l], 1);
}
while(r > q[i].r) {
add(a[r], -1);
sum -= query(rb[r]) - query(lb[r]);
r--;
}
while(l < q[i].l) {
add(a[l], -1);
sum -= query(rb[l]) - query(lb[l]);
l++;
}
ans[q[i].id] = sum;
}
for (int i = 1; i <= m; i++)
printf("%d\n", ans[i]);
}

  

HDU 6534 莫队+ 树状数组的更多相关文章

  1. bzoj3236 作业 莫队+树状数组

    莫队+树状数组 #include<cstdio> #include<cstring> #include<iostream> #include<algorith ...

  2. BZOJ_3289_Mato的文件管理_莫队+树状数组

    BZOJ_3289_Mato的文件管理_莫队+树状数组 Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号 .为了防止他人 ...

  3. BZOJ3236[Ahoi2013]作业——莫队+树状数组/莫队+分块

    题目描述 输入 输出 样例输入 3 4 1 2 2 1 2 1 3 1 2 1 1 1 3 1 3 2 3 2 3 样例输出 2 2 1 1 3 2 2 1 提示 N=100000,M=1000000 ...

  4. COGS.1822.[AHOI2013]作业(莫队 树状数组/分块)

    题目链接: COGS.BZOJ3236 Upd: 树状数组实现的是单点加 区间求和,采用值域分块可以\(O(1)\)修改\(O(sqrt(n))\)查询.同BZOJ3809. 莫队为\(O(n^{1. ...

  5. bzoj 3289: Mato的文件管理 莫队+树状数组

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Mato同学 ...

  6. 51nod 1290 Counting Diff Pairs | 莫队 树状数组

    51nod 1290 Counting Diff Pairs | 莫队 树状数组 题面 一个长度为N的正整数数组A,给出一个数K以及Q个查询,每个查询包含2个数l和r,对于每个查询输出从A[i]到A[ ...

  7. 【BZOJ3460】Jc的宿舍(树上莫队+树状数组)

    点此看题面 大致题意: 一棵树,每个节点有一个人,他打水需要\(T_i\)的时间,每次询问两点之间所有人去打水的最小等待时间. 伪·强制在线 这题看似强制在线,但实际上,\(pre\ mod\ 2\) ...

  8. HihoCoder 1488 : 排队接水(莫队+树状数组)

    描述 有n个小朋友需要接水,其中第i个小朋友接水需要ai分钟. 由于水龙头有限,小Hi需要知道如果为第l个到第r个小朋友分配一个水龙头,如何安排他们的接水顺序才能使得他们等待加接水的时间总和最小. 小 ...

  9. BZOJ 3236 莫队+树状数组

    思路: 莫队+树状数组 (据说此题卡常数) yzy写了一天(偷笑) 复杂度有点儿爆炸 O(msqrt(n)logn) //By SiriusRen #include <cmath> #in ...

随机推荐

  1. Centos7 忘记密码的情况下,修改root密码

    linux管理员忘记root密码,需要进行找回操作. 本文基于centos7环境进行操作,由于centos的版本是有差异的,继续之前请确定好版本 一.重启系统,在开机过程中,快速按下键盘上的方向键↑和 ...

  2. Centos yum的源 设置为阿里云源

    在 阿里巴巴镜像站页面,在centos 操作的帮助,有介绍 wget和curl 2种方式来下载CentOS-Base.repo 备份 mv /etc/yum.repos.d/CentOS-Base.r ...

  3. 创建者模式-Builder

    创建者模式使用多个简单的对象一步一步构建成一个复杂的对象.它提供了一种创建对象的最佳方式.一个 Builder 类会一步一步构造最终的对象,该 Builder 类是独立于其他对象的. 一.类图 创建者 ...

  4. jquery submit事件

    jquery submit 事件 $('#form').submit(function(){ if(true){ //do return true; }else{ //do return false; ...

  5. Java 设计模式-【单例模式】

    单例解决了什么问题:为了节约系统资源,有时需要确保系统中某个类只有唯一一个实例,当这个唯一实例创建成功之后,我们无法再创建一个同类型的其他对象,所有的操作都只能基于这个唯一实例.为了确保对象的唯一性, ...

  6. Qt开发MySQL程序发布后出现"Driver not loaded"的问题

    1.安装qt的显示界面程序 2.安装mysql-server 3.给系统增加mysql-server的环境C:\Program Files\MySQL\MySQL Server 5.7\bin 4.将 ...

  7. sql server 基础语法2

    别名,选择,查询,排序,去重,筛选 select * from UserInfo as ui --起别名 select UserName,UserPwd --指定选择的列 from UserInfo ...

  8. CDN技术之--内容缓存工作原理

    有CDN前的网站服务技术–硬件扩展:高成本,灵活性和可扩展性比较差–镜像技术(mirroring):镜像服务器安装有一个可以进行自动远程备份的软件,每隔一定时间,各个镜像服务器就会到网站的源服务器上去 ...

  9. bootstrap的模态框的使用

    bootstrap的模态框 如果只想单独使用模态框功能,可以单独引入modal.js,和bootstrap的css,在bootstrap的包中,可引入bootstrap.js. 用法 通过data属性 ...

  10. msf generate exec payload

    daniel@daniel-mint ~/msf/metasploit-framework $ ruby msfpayload windows/exec CMD=calc.exe N WARNING: ...