算法常见题型之前缀和差分区间覆盖进阶:平面圆覆盖
算法常见题型之前缀和差分区间覆盖进阶平面圆覆盖例题https://www.luogu.com.cn/problem/P16684一、题目大意提炼给定nnn个圆心、半径均为整数的圆qqq次询问每次给出一个整数坐标点判断该点被多少个圆覆盖点在圆边界上也算覆盖若覆盖次数为奇数输出Yes区域为彩色若覆盖次数为偶数输出No区域为无色。二、基础回顾一维差分模板核心作用一维差分数组用于批量区间修改 单次前缀和还原可以在O(1)O(1)O(1)时间内给区间 [L,R] 的所有元素统一加上一个值最后通过一次前缀和得到最终数组是处理区间覆盖问题的基础工具。标准模板vectorintd(n2,0);// 差分数组// 给区间[L, R]所有元素加valvoidadd(intL,intR,intval){d[L]val;d[R1]-val;}// 前缀和还原原数组for(inti1;in;i){d[i]d[i-1];}时间复杂度区间修改O(1)O(1)O(1)还原数组O(n)O(n)O(n)三、思路分析从暴力到优化暴力法的局限最朴素的做法每次询问遍历所有nnn个圆通过距离公式判断点是否在圆内。时间复杂度O(q∗n)106∗103109O(q * n) 10^6 *10^3 10^9O(q∗n)106∗103109运算量过大必然超时。突破口坐标范围有限题目中所有坐标均为 1到1000 的整数整个平面只有 1000*1000 1e6 个整数点。我们可以预处理出所有整数点的覆盖次数之后每次询问O(1)O(1)O(1)直接查表适合百万级查询量。进阶思路降维 差分直接逐圆逐点标记覆盖最坏复杂度为 O(n*πr2)3e8依然偏高。利用圆的几何性质优化对任意一个圆固定每一行yyy该行上被圆覆盖的xxx坐标一定是一段连续区间。于是我们可以把二维圆覆盖问题拆解为「每一行上的一维区间加」再用一维差分快速完成区间标记最终通过前缀和得到所有点的覆盖次数。四、算法核心原理圆的行扫描公式对于圆心 (x0,y0)、半径rrr的圆任取一行yy0jjjj为行偏移量-r j r根据圆的方程 代入y−y0jy-y0jy−y0j可得该行x的覆盖范围即每一行对应一个连续区间 [L, R]其中Lx0−dL x0 - dLx0−dRx0dR x0 dRx0d差分标记 前缀和还原定义二维差分数组g[x][y]对每一行yyy独立维护x方向的差分对每个圆遍历所有行偏移量jjj计算对应行的区间 [L,R]执行差分操作g[L][y]、g[R1][y]--所有圆标记完成后对每一行yyy沿x方向做前缀和g[x][y]即为点(x,y)(x,y)(x,y)的覆盖次数查询时直接判断g[x][y]的奇偶性即可。五、正解代码变量定义与初始化#includebits/stdc.husingnamespacestd;constintN1010;// 坐标最大1000开1010防止越界intg[N][N];// x方向差分数组g[x][y]对应坐标(x,y)intn,m;// n个圆m次询问intx[N],y[N],r[N];// 存储每个圆的圆心与半径signedmain(){cinn;for(inti1;in;i){cinx[i]y[i]r[i];// 处理j0圆心所在的水平行inttlmax(1,x[i]-r[i]);inttrmin(1001,x[i]r[i]1);g[tl][y[i]];g[tr][y[i]]--;}for(inti1;in;i){for(intj1;jr[i];j){// 计算当前行对应的x方向半长dintdsqrt(r[i]*r[i]-j*j);intLmax(1,x[i]-d);intRmin(1001,x[i]d1);intshangy[i]j;// 上方第j行intxiay[i]-j;// 下方第j行if(shang1001){g[L][shang];g[R][shang]--;}if(xia0){g[L][xia];g[R][xia]--;}}}for(inti1;i1000;i){// 前缀和还原覆盖次数for(intj1;j1000;j){g[i][j]g[i-1][j];}}cinm;while(m--){// 处理询问inta,b;cinab;if(g[a][b]1)coutYes\n;elsecoutNo\n;}return0;}六、样例模拟样例输入2个圆圆心分别为 (1,1) 半径5、(11,1) 半径5查询点 (1,1)、(6,1)、(11,1)。差分标记圆1在 y1 行x区间 [1,5]差分g[1][1]g[7][1]--圆2在 y1 行x区间 [6,15]差分g[6][1]g[17][1]--。前缀和计算y1行x1值为 1奇数→ 输出Yesx6值为 112偶数→ 输出Nox11值为 011奇数→ 输出Yes。与样例输出完全一致。七、复杂度时间复杂度预处理每个圆遍历O(r)O(r)O(r)行总操作量约10610^6106次前缀和为 1000 *1000 10^6 次整体约 2e6 次运算效率极高。查询O(q)O(q)O(q)百万级查询无压力。八、总结本题是前缀和差分思想在二维几何问题中的经典进阶应用核心思路是降维处理将二维的圆覆盖拆解为逐行的一维区间覆盖用差分把区间修改从O(n)O(n)O(n)优化到O(1)O(1)O(1)最终通过预处理实现查询的极致效率。这种「网格覆盖 差分降维」的思路广泛适用于坐标范围有限、查询量巨大的平面覆盖类题目。

相关新闻

BLE协议栈核心API实战:GATT、GAPBondMgr与L2CAP深度解析

BLE协议栈核心API实战:GATT、GAPBondMgr与L2CAP深度解析

1. 项目概述:BLE协议栈核心API的实战价值在物联网和智能硬件的开发浪潮中,蓝牙低功耗(BLE)技术因其低功耗、低成本和高普及率,已成为连接万物的首选无线技术之一。然而,对于许多开发者而言,从理…

2026/7/29 10:08:29 阅读更多 →
埃隆·马斯克“超级应用”核心 X Money 上线,美区 X 订阅用户可享数字钱包等功能!

埃隆·马斯克“超级应用”核心 X Money 上线,美区 X 订阅用户可享数字钱包等功能!

X Money 上线:马斯克“超级应用”的关键一步据 9to5Mac 报道,埃隆马斯克将 X 转变为“超级应用”使命的核心部分——X Money 于今日正式推出。这个支付平台为美国的 X Premium 和 Premium Plus 订阅用户提供了丰富的功能,包括数字钱包、类似 …

2026/7/29 10:08:29 阅读更多 →
XXMI Launcher终极指南:一站式游戏模组管理神器,让你轻松玩转所有热门游戏

XXMI Launcher终极指南:一站式游戏模组管理神器,让你轻松玩转所有热门游戏

XXMI Launcher终极指南:一站式游戏模组管理神器,让你轻松玩转所有热门游戏 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 还在为不同游戏的模组管理而烦…

2026/7/29 10:08:29 阅读更多 →

最新新闻

AM65xx多协议时间同步架构解析与工业应用实践

AM65xx多协议时间同步架构解析与工业应用实践

1. 项目概述与时间同步的核心价值在工业自动化、汽车电子和物联网这些对时序要求极为严苛的领域,时间同步早已不是“锦上添花”的功能,而是系统能否稳定、可靠、精确运行的“生命线”。想象一下,在一个现代化的智能工厂里,机械臂的…

2026/7/29 10:17:33 阅读更多 →
2026论文工具避坑指南[特殊字符]别乱装一堆软件!实测90%同学都用错了✅

2026论文工具避坑指南[特殊字符]别乱装一堆软件!实测90%同学都用错了✅

全能无坑工具直达🌐:https://www.okbiye.com 很多人毕业效率低、论文反复返修,根本不是自己不会写,而是工具用得太杂、太偏、太鸡肋! 写论文要开题、找文献、写综述、改格式、降重润色、画图表、做问卷、整源码&…

2026/7/29 10:17:33 阅读更多 →
基于TPS23841的高功率PoE PSE控制器设计实战与PR598参考设计深度解析

基于TPS23841的高功率PoE PSE控制器设计实战与PR598参考设计深度解析

1. 项目概述与核心价值如果你正在设计一款需要为多个网络摄像头、无线接入点或工业物联网网关集中供电的网络交换机或中跨设备,那么“以太网供电”(PoE)技术绝对是绕不开的一环。这项技术的神奇之处在于,它能让一根普通的网线同时…

2026/7/29 10:17:33 阅读更多 →
Spring AI工具调用实战:规范设计与性能优化

Spring AI工具调用实战:规范设计与性能优化

1. Spring AI工具调用实战指南 最近在重构一个智能客服系统时,我深度使用了Spring AI的工具调用功能。这个看似简单的特性,在实际落地时却藏着不少门道。今天就从实战角度,聊聊如何规范地使用Spring AI的工具调用能力。 工具调用&#xff08…

2026/7/29 10:17:33 阅读更多 →
Arduino调试宏设计:从printf到零开销日志系统

Arduino调试宏设计:从printf到零开销日志系统

1. 从“黑盒”到“白盒”:为什么Arduino调试需要自己的工具玩Arduino的朋友,尤其是从零开始捣鼓项目的,估计都经历过这么个阶段:代码烧进去,板子没反应,或者反应不对。这时候,最常见的操作是什么…

2026/7/29 10:17:33 阅读更多 →
VLYNQ高速串行接口协议深度解析:从寄存器配置到性能优化实战

VLYNQ高速串行接口协议深度解析:从寄存器配置到性能优化实战

1. 项目概述与VLYNQ协议核心价值在嵌入式系统,尤其是多核处理器、DSP阵列或者异构计算平台(比如DSPFPGA)的设计中,芯片间的高速、可靠、低延迟通信是决定系统整体性能的瓶颈之一。传统的并行总线虽然速度快,但引脚数量…

2026/7/29 10:16:32 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻