Warning: session_start(): open(/tmp/sess_a261208deac259fe2136cef01941673f, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Writing /data/wiki/data/cache/d/de2edb2fcb553ea79b79c722a4e13dbc.captchaip failed

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:legal_string:王智彪:扫描线 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:legal_string:王智彪:扫描线

到此差别页面的链接

后一修订版
前一修订版
2020-2021:teams:legal_string:王智彪:扫描线 [2021/08/04 11:49]
王智彪 创建
2020-2021:teams:legal_string:王智彪:扫描线 [2021/08/04 11:52] (当前版本)
王智彪
行 3: 行 3:
 ===== 算法思想 ===== ===== 算法思想 =====
  
-问题引入:给n个矩形的左下角和右上角坐标 求并集覆盖的总面积+问题引入:给 ​$n个矩形的左下角和右上角坐标 求并集覆盖的总面积
  
-复杂度O(nlogn)+复杂度 ​$O(nlogn)$
  
-比如按照横坐标从左到右扫,横坐标小的为1,横坐标大的为-1,面积就是相邻横坐标的差乘以当前区间有多少覆盖是正数的(毕竟不可能是负数)。这个线段树维护一下就行了。遇到1或者-1都交给线段树update就可以了。+比如按照横坐标从左到右扫,横坐标小的为 ​$1,横坐标大的为 ​$-1,面积就是相邻横坐标的差乘以当前区间有多少覆盖是正数的(毕竟不可能是负数)。这个线段树维护一下就行了。遇到 ​$1或者 ​$-1都交给线段树 ​$update就可以了。
  
-周长笨方法就是作两边扫描线,横纵各一次,周长是相邻两个阶段覆盖区域的绝对值之差,需要画个图看一下。<​delete>​但我觉得笨方法看起来更好想不是吗</​delete>​+周长笨方法就是作两边扫描线,横纵各一次,周长是相邻两个阶段覆盖区域的绝对值之差,需要画个图看一下。 
 + 
 +但我觉得笨方法看起来更好想不是吗 ​$(×)$
  
 ===== 代码练习 ===== ===== 代码练习 =====
2020-2021/teams/legal_string/王智彪/扫描线.1628048969.txt.gz · 最后更改: 2021/08/04 11:49 由 王智彪