【AtCoder】离线询问+树状数组

简介: 笔记

题目描述



input#1:


2 3 1

1 1

1 2

2 2

1 2


output#1:


3


input#2:


10 3 2

1 5

2 8

7 10

1 7

3 10


output#2:


1

1


input#3:


10 10 10

1 6

2 9

4 5

4 7

4 7

5 8

6 6

6 7

7 9

10 10

1 8

1 9

1 10

2 8

2 9

2 10

3 8

3 9

3 10

1 10


output#3:


7

9

10

6

8

9

6

7

8

10


题意



17.png

思路


如本文标题,我们需要对询问离线处理,这样对于区间询问,我们就可以进行排序,并使得左端点单调增,以便处理后续问题。


考虑用树状数组维护区间右端点,所以可以先将所有的区间的右端点加入树状数组中。在每次询问一个区间 [ l , r ] [l, r][l,r] 时,删掉所有区间左端点小于 l ll 的树状数组中右端点的值。然后直接进行查询当前右端点小于等于 r rr 的值的个数,即位该询问的结果。


代码


class BIT {
public:
  BIT() { memset(tr, 0, sizeof tr); }
  int tr[N];
  void add(int x, int v = 1) { for (; x < N; x += x & -x) tr[x] += v; }
  int sum(int x) { int res = 0; for (; x; x -= x & -x) res += tr[x]; return res; }
};
int n, m, q;
struct node {
  int l, r;
  int id;
  bool operator<(const node &A) const {
    if (l == A.l) return r < A.r;
    return l < A.l;
  }
}; 
node a[N], b[N];
int res[N];
void solve() {
  cin >> n >> m >> q;
  BIT tree;
  for (int i = 1; i <= m; i++) {
    int l, r; cin >> l >> r;
    a[i] = {l, r};
    tree.add(r, 1);
  }
  for (int i = 1; i <= q; i++) {
    int l, r; cin >> l >> r;
    b[i] = {l, r, i}; 
  }
  sort(a + 1, a + 1 + m);
  sort(b + 1, b + 1 + q);
  int j = 1;
  for (int i = 1; i <= q; i++) {
    int l = b[i].l, r = b[i].r, id = b[i].id;
    while (j <= m && a[j].l < l) {
      tree.add(a[j].r, -1);
      j++;
    }
    res[id] = tree.sum(r);
  }
  for (int i = 1; i <= q; i++) {
    cout << res[i] << endl;
  }
}
相关文章
|
3月前
|
存储 弹性计算 安全
2026年阿里云服务器租用价格:包年、包月、按量付费收费标准与活动价格
阿里云2026年推出多款特惠云服务器,其中经济型e实例2核2G配置99元/年,u1实例2核4G配置199元/年,轻量应用服务器2核2G峰值200M带宽抢购价38元/年。新老用户均可购买99元云服务器,199元云服务器限企业用户。此外,阿里云还提供加99元解锁弹性数据库和高效存储保障的套餐优惠,以及特惠建站套餐和特惠上云套餐。GPU服务器新人专享包月5折起,包年4折起优惠。购买前建议领取优惠券以降低购买成本。
|
Ubuntu Linux KVM
分享一些OpenStack的qcow2格式实例镜像
分享一些OpenStack的qcow2格式实例镜像
18627 1
分享一些OpenStack的qcow2格式实例镜像
|
6月前
|
存储 人工智能 Cloud Native
云原生数据仓库 AnalyticDB Supabase 使用全攻略
云原生数据仓库 AnalyticDB PostgreSQL 版 Supabase 是基于开源 Supabase 深度增强的全托管平台,兼容 Supabase 生态,提供数据库、用户认证、边缘函数等核心能力,并集成通义千问等 AI 模型,支持 Vibe Coding 与智能应用快速开发。原生支持微信、支付宝 OAuth,具备企业级安全与全链路可观测性,助力开发者高效构建 AI 原生应用。
|
SQL 自然语言处理 关系型数据库
MySQL的match匹配多个字符串的语法
【8月更文挑战第27天】MySQL的match匹配多个字符串的语法
717 67
|
存储 关系型数据库 MySQL
MySQL中为什么要使用索引合并(Index Merge)?
通过这些内容的详细介绍和实际案例分析,希望能帮助您深入理解索引合并及其在MySQL中的
851 10
|
5月前
|
存储 缓存 安全
阿里云活动内云服务器实例规格有何区别?e/u2a/c9i/g9i/r9i实例性能介绍与选择参考
本文介绍了阿里云服务器中经济型e、通用算力型u2a、计算型c9i、通用型g9i、内存型r9i五类实例的性能特点、适用场景及选择参考。经济型e实例适合中小型网站建设及开发测试;通用算力型u2a基于AMD平台,适合中小企业级应用;计算型c9i适配机器学习推理等高计算场景;通用型g9i满足多场景企业级需求;内存型r9i适合实时大数据分析。用户可根据应用场景、性能需求及预算综合选择。
|
Kubernetes Go 持续交付
一个基于Go程序的持续集成/持续部署(CI/CD)
本教程通过一个简单的Go程序示例,展示了如何使用GitHub Actions实现从代码提交到Kubernetes部署的CI/CD流程。首先创建并版本控制Go项目,接着编写Dockerfile构建镜像,再配置CI/CD流程自动化构建、推送Docker镜像及部署应用。此流程基于GitHub仓库,适用于快速迭代开发。
400 3
|
关系型数据库 MySQL 数据库
从MySQL优化到脑力健康:技术人与效率的双重提升
聊到效率这个事,大家应该都挺有感触的吧。 不管是技术优化还是个人状态调整,怎么能更快、更省力地完成事情,都是我们每天要琢磨的事。
393 23
|
SQL 关系型数据库 MySQL
MySQL语法
MySQL语法
387 4
|
存储 关系型数据库 MySQL
MySQL的优化利器⭐️Multi Range Read与Covering Index是如何优化回表的?
本文以小白的视角使用通俗易懂的流程图深入浅出分析Multi Range Read与Covering Index是如何优化回表