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

扫描线乱谈

扫描线乱谈

前置知识

离散化,线段树

扫描线

首先假设你有n个矩形。如果直接暴力求解这些矩形的覆盖面积肯定不行,这时就要用扫描线算法。
假设有一根线,从下往上扫描:

把每个小矩形分成很多不同的块,高是扫过的距离,那个位置没有被覆盖高就是0。显然答案就是高×宽的和。
每次线碰到矩形底边,其在x轴对应的位置(也就是投影)全部加1,相反,碰到底边则全部减1。
那么那一个线段树维护就好了,数据大需要离散化。
那么模板题的核心代码就是这个了:

add(f(b[0].x1),f(b[0].x2),1);
for(int i=1;i<2*n;i++){int x1 = f(b[i].x1) , x2 = f(b[i].x2);sum += (b[i].y - b[i-1].y) * w[0];add(x1,x2,b[i].o);
}
//add是区间加,b是上下边(x1,x2相当于l,r,若为底边则o=1否则o=-1),f是离散化函数

(很简单对吧,快去把模板题切了)

http://www.hskmm.com/?act=detail&tid=8811

相关文章:

  • 详细介绍:量子计算学习(第十四周周报)
  • 视频播放时切出页面视频暂停(亲测可用)
  • VulkanAPI细节梳理1
  • cf773
  • (简记)一类区间覆盖问题 珂朵莉树 ODT
  • 5 事务隔离级别与锁机制
  • 我向编程世界宣布的第一声
  • Win11 安装 MinGW
  • 意大利 公证 海牙认证速度 单号 双号
  • Linux命令学习笔记
  • 网络安全需要真正的承诺而非表面功夫
  • 想成为AI绘画高手?打造独一无二的视觉IP!Seedream 4.0 使用指南详解,创意无界,效率翻倍!
  • 完整教程:液氮低温恒温器的应用领域
  • 轮转数组-leetcode
  • CF1864G Magic Square
  • OI TRICKS
  • day37大模型程序开发-GraphRAG理论
  • G
  • AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLAM1具身机器人
  • day3536大模型应用开发-模型微调框架
  • 使用NVM管理Node.js版本
  • day12-Trae之一键换脸APP开发02
  • day35大模型应用开发-模型微调
  • Rust多线程:Worker 结构体与线程池中任务的传递机制
  • day10-AI短视频01
  • 详细介绍:今日分享 KMP算法
  • P6631 [ZJOI2020] 序列 题解
  • 初始化一个rust环境
  • 编程里边有好多不容易触及的知识点
  • 25.9.18随笔联考总结