当前位置: 首页 > 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.zskr.cn/news/81753.html

相关文章:

  • windriver 第5章:USB 概述
  • Airflow - from airflow import DAG and from airflow.sdk import DAG, which one is better?
  • 货代邮件自动化处理系统设计文档
  • DSU on array
  • 吐血整理!新房全包装修,性价比之王大盘点 - 品牌测评鉴赏家
  • Resources资源同步加载、异步加载、卸载
  • windriver 第6章:使用DriverWizard
  • MATLAB R2025a免费下载安装教程与激活教程超详细图文步骤(附安装包)
  • 新房装修公司大揭秘!一文教你避坑选好公司 - 品牌测评鉴赏家
  • 2025整装公司排行榜发布:十大整装品牌引领行业新趋势 - 速递信息
  • 头歌MySQL——单表查询 - 详解
  • 2025年整装公司口碑推荐实力TOP榜|十大装修公司对比 - 速递信息
  • Maven 用户的 Gradle 迁移与精通手册 - 指南
  • AI元人文构想:论当代论文与LLM
  • 引脚定义
  • 任意地址写format_string_level1题后感basectf
  • scheme区间算术
  • HashMap
  • CDQ 分治
  • day3 Java基础2
  • 2025年12月成都软件开发公司最新推荐,crm系统定制,管理系统,物联网,运维管理系统软件开发公司选择指南 - 品牌鉴赏师
  • PPT: Pre-trained Prompt Tuning - 预训练提示调优详解 - 教程
  • 某中心在EMNLP 2024的50余篇AI论文技术纵览
  • 常见八大排序算法介绍(冒泡排序、插入排序、归并排序、计数排序、选择排序、快速排序、堆排序、希尔排序)
  • 你的接口很好,但在使用者眼里,它可能只是个打不开的黑盒
  • 完整教程:Prefix-Tuning:大语言模型的高效微调新范式
  • 钉钉告警部署【prometheus-webhook-dingtalk】
  • day3 Java基础
  • Typora最后的免费版本
  • linux vrf icmp reply /vrf icmp 响应错误消息