首页 > 其他分享 >[学习笔记+做题记录] 扫描线

[学习笔记+做题记录] 扫描线

时间:2023-05-13 15:55:35浏览次数:51  
标签:纵坐标 笔记 做题 扫描线 一段 长度 矩形

一、扫描线

扫描线一般用于图形类的计算,用数据结构辅助在图形上扫来扫去,比如计算矩形面积并,周长并,二位数点等问题。

二、Atlantis 问题 / 矩形面积并

https://www.luogu.com.cn/problem/P5490

先挂张图(明显是 OI-wiki 的):

image

算法原理很简单,就是扫描一下每一个纵坐标 \(y\)(矩阵的边界),其对应在矩形并中有贡献的长度,然后累加即可。

比如说上面的动图,将矩形并分成 \(5\) 段,每一段都对应纵坐标的一段区间,然后再乘以在矩形并里的长度,算出这一段的面积然后累加即可。

Q:每一段的底边长度怎么维护?

A:用线段树,每加入 / 删除一个矩形就在线段树的对应区间更新即可。

然后就是纵坐标从小到大扫一遍。

如果范围很大就离散化。

标签:纵坐标,笔记,做题,扫描线,一段,长度,矩形
From: https://www.cnblogs.com/RB16B/p/17397536.html

相关文章

  • css笔记
    一、常用易忘1.文本换行 word-wrap:break-word;normal:默认属性值,表示文本不受限制,可以超出边界;break-word:表示当文本超出边界时,自动将单词截断换行,但如果单词本身就很长,仍然会超出边界;anywhere:表示文本可以在任何地方换行;overflow-wrap:表示文本可以在“......
  • A3转A4笔记
    先将PDF中所有图片导出来,然后转到HTML中,再用JS调高宽和边距关键代码:<script>$('img').each(function(i){$(this).css('height','1750px');$(this).css('margin-top','-80px');varindex=(i+1)%4;if(index==1)......
  • 【acwing】Django课程笔记
     工程课Linux-8.0.SSH的简易安全配置-AcWing  (避免服务器被偷家)怎样修改远程登录的端口?_弹性云服务器ECS_常见问题_登录与连接_远程连接类_华为云(huaweicloud.com)vim/etc/ssh/sshd_configservicesshdrestart ......
  • MySql学习日志二,数据库的笔记
    数据库的列类型【了解】数值tinyint十分小的数据1个字节smallint较小的数据2个字节mediumint中等大小的数据三个字节int标准的整数4个字节常用intbigint较大的数据8个字节float浮点数4个字节double浮点数8个字节decimal字符......
  • tkinter学习笔记
    一:项目背景利用tkinter做一个GUI页面,用于实现学生信息的管理,实现学生信息的新增、修改、删除、查询等功能二:布局pack()、grid()以及place()三:使用技术栈标签(Label)与单行输入框(Entry)样例:代码实现:#新增页面classInsertFrame(tk.Frame):def__init__(self,root):s......
  • mysql常用函数、查询和事务说明笔记
    1.MySQL中内置了很多字符串函数,常用的几个如下:运用示例:示例表里初始数据:  字段title和titleImageconcat:字符串拼接selectconcat(title,titleImage)asnewtitlefrom testtablewhereid=65;lower:全部转小写select lower(title) asnewtitlefrom testta......
  • 印象笔记强制notes格式后导入obsidian、有道云笔记方法
    新版印象笔记给enex格式去掉了,换成notes格式,无法导入别的地方,上网查了下还是有方法导出的安装工具$pipinstall--userevernote-backup按照教程同步笔记$evernote-backupinit-db--backendchina$evernote-backupsync$evernote-backupexportoutput_dir/......
  • Django笔记四十之运行Django环境的python脚本
    本文首发于公众号:Hunter后端原文链接:Django笔记四十之运行Django环境的python脚本这一篇笔记介绍如何在Django中运行脚本。假设说我们要实现一个功能,需要获取blog.models.Blog这张表里的总数且使用print()输出。如果代码逻辑很短,且是一次性执行的操作,我们可以在系统的......
  • Python 输出简单彩色字符【ANSI 转义序列笔记】
    """ASCII码的0-31和127被称为C0控制字符例如\07就是BEL,响铃(\0表示八进制)其中\033(十进制27,十六进制x1B)是ESC,转义字符,它可以用于转义序列如\033[表示序列导入(ControlSequenceIntroducer),简写为CSI也可写作\x1b[两个字......
  • 笔记day02
    一、编程语言的发展史1.机器语言 机器语言:就是计算机内部只能识别0,1二进制。由于计算机是基于电工作的,而电有高低电频之分。  优点:执行速度快;缺点:学习难度大。2.汇编语言  汇编语言:用简单的英文字母表示一串二进制。比如:用a来表示0001。  其优点是:执行速度快;......