当前位置: 首页 > news >正文

恰好被k个区间覆盖的点的数量

1 - 模型描述

在数轴上,有 \(n\) 个区间,对于第 \(i\) 个区间覆盖的区间为 \([l_i, r_i]\) ,现在你要求出所有 \(k \in [1, n]\),恰好被 \(k\) 个区间覆盖的点的个数。

2 - 做法

对于模型的描述,很容易想到用差分解决。但是通常题目的数据范围不适合常规差分,如 \(1 \leq l_i, r_i, \leq 10^{18}\)。因此考虑离散化。用 \(map\) 来记录每一个端点的差分值,在读取区间 \([l, r]\) 的时候进行如下操作:

\[event[l]+1, \quad event[r+1]-1 \]

我们用扫描线来扫描出现过的每一个端点,同时使用变量 \(sum\) 来记录当前覆盖区间的数量,\(last\) 来记录上一个扫描到的端点的位置。

每当我们扫描到一个端点 \(i\),我们先更新答案 \(ans[sum] = ans[sum] + (i - last)\),再更新当前覆盖区间的数量 \(sum = sum + diff[i]\).

3 - 例题 - CF1000C

题目大意:

给你 \(n\) 个区间,求被这些区间覆盖层数为 \(k\) \((1 \leq k \leq n)\) 的点的个数。

输入格式:

第一行一个整数 \(n\) \((n \leq 2∗10^5)\)

以下 \(n\) 行,每行有两个整数,即这个区间的左右端点 \(l,r\) \((0 \leq l \leq r \leq 10^{18})\)

输出格式:

\(n\) 个整数,即每个被覆盖层数对应的点的个数。

思路:

本题思路与模型处理方式基本一致,即:

  • 对每个区间的端点进行离散化的差分处理。
  • 扫描每一个端点,在加上端点上的差分值的同时维护答案。

参考代码:

#include <bits/stdc++.h>
using namespace std;#define endl '\n'
#define i64 long longint main() {ios::sync_with_stdio(false);cin.tie(nullptr), cout.tie(nullptr);int n;cin >> n;map<i64, int> event;for (int i = 1; i <= n; i ++ ) {i64 l, r;cin >> l >> r;event[l]++, event[r + 1]--;}i64 sum = 0, last = -1;vector<i64> ans(n + 1);for (auto& [cur, diff] : event) {ans[sum] += cur - last;sum += diff;last = cur;}for (int i = 1; i <= n; i ++ ) cout << ans[i] << ' ';
}

4 - 练习

ABC221D: https://atcoder.jp/contests/abc221/tasks/abc221_d

http://www.jsqmd.com/news/71212/

相关文章:

  • Day59(29)-F:\vs_ai_work\vue-tlias-management
  • windriver 第5章:USB 概述
  • Airflow - from airflow import DAG and from airflow.sdk import DAG, which one is better?
  • langchain工具上下文
  • 货代邮件自动化处理系统设计文档
  • 吐血整理!新房全包装修,性价比之王大盘点 - 品牌测评鉴赏家
  • DSU on array
  • Resources资源同步加载、异步加载、卸载
  • 新房全包装修怎么选?这 3 类高性价比公司帮你省心省钱(附 2025 口碑红榜) - 品牌测评鉴赏家
  • 无参和有参URL的定义
  • 线段的最少分组
  • 【Ubuntu】系统下VScode配置ESP-IDF插件esp-clang和Python 3报错问题
  • 新房装修不迷路!十大公司深度评测,盛世和家登顶榜首 - 品牌测评鉴赏家
  • windriver 第6章:使用DriverWizard
  • vue 中支持不定高的虚拟滚动的表格 vxe-table 的使用,动态高度虚拟列表高性能表格
  • windriver 第4章:PCI Express 概述
  • GROMACS 2025.4安装(非root用户)
  • MATLAB R2025a免费下载安装教程与激活教程超详细图文步骤(附安装包)
  • 解码string类——字符串处理
  • 新房装修公司大揭秘!一文教你避坑选好公司 - 品牌测评鉴赏家
  • 新手装修必看!第一次选对装修公司,省心攻略全解析 - 品牌测评鉴赏家
  • Docker Swarm 的负载均衡和平滑切换原理 - 实践
  • windriver 第3章: 安装WinDriver
  • 2025年推荐实力户外滑梯厂家飞友,以专业品质守护儿童欢乐时光 - 速递信息
  • 2025整装公司排行榜发布:十大整装品牌引领行业新趋势 - 速递信息
  • day3 Java基础3
  • 头歌MySQL——单表查询 - 详解
  • windriver 第2章: 了解设备驱动程序
  • 纯棉卫生巾推荐,4款热门产品深度横评,看完这篇再下单! - 速递信息
  • 2025年整装公司口碑推荐实力TOP榜|十大装修公司对比 - 速递信息