海报

这题目是扫描线另一经典应用:求矩形并的周长

我们对c数组的求法跟求面积的时候一样,考虑如何统计答案

我们考虑什么情况会对答案做出贡献

可以发现,我们可以将边分成垂直的边和水平的边,用相同的方法分别统计再相加,下面以求垂直的边为例

垂直的边对答案做出贡献的时候只会在某一次修改的时候

假设在这次修改前,我们c数组的和是x1,修改后c数组的和是x2,那么这个答案的贡献就是abs(x1x2)

为什么?

如果这次修改是+1,那么对于原来为0c数组的某个下标,他在这里就会出现一条长度为1黑线,我们就要把这个黑线统计成周长,对于原来不为0c数组的某个下标,这里不会出现黑线,也就不会统计

如果这次修改是1,那么对于原来为1c数组的某个下标,他在这里就会出现一条长度为1黑线,我们就要把这个黑线统计成周长,对于原来不为1c数组的某个下标,这里不会出现黑线,也就不会统计

update 2024.7.30

严格证明也可以像面积并一样,说明当前改变的单位线段是否在矩形并里面

posted @   最爱丁珰  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示