【计算几何】zjoi2008 risk

本文介绍了如何解决计算几何问题,通过将线段拆分成有向线段并建立边连接,利用DFS寻找封闭区域,并使用环顾法确定区域包含关系。最终通过实例代码展示了解决过程,强调了arctan2函数在求极角中的应用。
摘要由CSDN通过智能技术生成

题目大意:给你一个平面图,平面被分成了若干个区域,求出每个区域与之相邻的区域,数据保证区域数不超过500;

 

有数据范围可以看出要求是低于N3的算法。

 

我的做法是:

  1.将每一条线段AB拆成两条有向线段AB与BA,然后将所有有向线段AB与从B点引出的线段中位于AB顺时针方向的第一条线段连有向边(BA与AB的夹角为2PI,而不是0)。这样对所有的线段做一次DFS之后就能将图中的封闭区域全部求出来,这样出了某个区域包含的区域,其他相邻的区域都可以求出来了;

  2.可以使用环顾法求出各个区域之间的包含关系,这个包含关系类似于一棵树,然后用拓扑序,先处理叶子节点,这样可以把包含关系也求出来。

 

这个方法是我觉得最好实现的方法了。

 

总之既然是计算几何题就肯定有很多细节的,最后还是拿了几组数据来调才A的(数据很不好生成。。)

 

另外就是发现math库里面直接就有求极角的函数了,那就是arctan2!以后不用自己写极角了,每次都要重新推一遍,囧。

 

code:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值