zoukankan      html  css  js  c++  java
  • 源每一22 不是线段树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542

    题目翻译:看北大课件去就是很简单的求面积并。怎么求呢?优秀的方法总是有的:

    自己画的图太丑了

    很简单的思路,把所有的矩形按照边分成一块一块的。具体来讲怎么实现呢?

    如图所示:拿一条竖直的线(也就是蓝线),从头扫到尾,碰到了有边的地方就算面积。这也就是传说中的扫描线算法。但是扫到的面积有大有小,怎么计算呢?

    一个离散化的思路:把所有矩形的横边延长,变成一个个小区间(也就是红线);当蓝线从左侧开始扫,扫到有边的地方讨论,如果是矩形左边的边,就在这个边所在的所有区间加1,如果是右边的边,就在矩形的右边减一;加一减一的同时,计算当前区间乘以两扫描线的长度,也就是当前区间的面积。加一减一很容易想到用线段树去优化。

    p.s.思路很简单,写法有点复杂:首先,要考虑边怎么存,区间怎么存,然后要考虑怎么在区间更新的同时算出面积。

    更新:线段树个鸡儿啊,扫一遍不就完了/喷血 复杂度也不高

    神仙博客: https://blog.csdn.net/u013480600/article/details/39322791

    不过也好 练练

  • 相关阅读:
    Qt笔记之 信号和槽
    Qt笔记之 坐标系
    Qt笔记之 QPushButton
    点双连通
    bzoj 2179 FFT快速傅立叶
    bzoj 4128 矩阵求逆
    bzoj 3924 点分
    bzoj 1076 状态压缩最优期望
    bzoj 3143 随机游走
    bzoj 4084 双旋转字符串
  • 原文地址:https://www.cnblogs.com/fengyuzhicheng/p/9326335.html
Copyright © 2011-2022 走看看