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

相关文章:

  • 详细介绍:量子计算学习(第十四周周报)
  • 视频播放时切出页面视频暂停(亲测可用)
  • Win11 安装 MinGW
  • Base match
  • Polars return_type类型设置(KIMI)
  • 网络安全需要真正的承诺而非表面功夫
  • Python拼接协程的运行结果,平铺成一个序列(KIMI)
  • Polars coalesce操作(取第一个非null值)(KIMI)
  • 数字孪生能源大数据云平台建设方案 - 实践
  • endsWith() 字符串部子串判断函数
  • G
  • day3536大模型应用开发-模型微调框架
  • day35大模型应用开发-模型微调
  • Rust多线程:Worker 结构体与线程池中任务的传递机制
  • 04-简单查询
  • MSS 到底是什么?Wireshark 分析TCP过程 - 教程
  • Manim实现闪光轨迹特效
  • 漏洞详解--文件上传 如何花样绕过?!
  • 深入解析:AI Agent开发秘籍:Prompt工程与测评最佳实践(建议收藏反复研读)
  • 实用指南:鸿蒙智能设备自动诊断实战:从传感器采集到远程上报的完整实现
  • 使用php -S 127.0.0.1:8000 新建php服务
  • WPF ControlTemplate DI Via Microsoft.Extensions.DependencyInjection
  • 完整教程:从“我店”模式看绿色积分电商平台的困境与破局
  • 完整教程:光伏电站安全 “守护神”:QB800 绝缘监测平台,为清洁能源高效运行筑固防线
  • Java的安装及卸载
  • 实用指南:订阅式红队专家服务:下一代网络安全评估新模式
  • Apache SeaTunnel 2.3.12 发布!核心引擎升级、连接器生态再扩张
  • StringComparer.OrdinalIgnoreCase
  • 在 WSL 中通过 Bash 函数快速转换 Windows 路径为 Ansible/WSL 路径 - 教程
  • 完整教程:如何管理好上网行为,8个上网行为管控措施分享,让上网井然有序