luogu P1856 [USACO5.5]矩形周长Picture

背景:

好久没有做扫描线的题目了。

题目传送门:

https://www.luogu.org/problemnew/show/P1856

题意:

给出 n n n个矩形,求组成图形周长。

思路:

你此时肯定在想:如果是面积不就是傻逼题目了吗。
确实是的。
现在是周长。
大佬(当然不是我):还是傻逼题。
确实是的。

定义长为 a a a,宽为 b b b,我们考虑 C = 2 ( a + b ) C=2(a+b) C=2(a+b) a , b a,b a,b是不会相互影响的。
因此我们考虑对于一个矩形分为长和宽分别处理。
扫描线很好的解决了这个问题。

首先我们考虑长。
首先套路就是升序啦。
若此时枚举的长为某一个矩形的下面,则你当前对周长的贡献就是 l − l overlap l-l_{\text{overlap}} lloverlap。其中 l l l为当前的这条线段的长度, l overlap l_{\text{overlap}} loverlap表示在操作前该区间已有线段的总长度。
若此时枚举的长为某一个矩形的上面。则删掉对应举行的下面。然后按照上面的操作更新贡献即可。

宽同理。

代码:

goto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值