【HNOI2003】多边形

来源:互联网 发布:js常用代码 编辑:程序博客网 时间:2024/05/29 15:43

【HNOI2003】多边形

【题目描述】

在一个多边形的展厅(不一定是凸多边形)内,一个警卫站在展厅中的某一些点,是可以看到展厅内所有地方的,而有些点则不行。比如下图中,站在A点或者B点,就不能看到展厅的某些地方,而站在C点,则可以看到展厅内的所有地方。


准确的说,站在图中阴影部分所示的任意一个点内,都可以看到展厅内的所有地方。


你的任务就是编写一个程序,计算阴影部分的面积。

【输入】

第一行是一个自然数N,表示多边形的顶点数。N不超过1500。之后N行每行两个整数(用空格分开),依次表示多边形的每个顶点的坐标。

【输出】

仅1行,是阴影部分的面积,保留2位小数。

【输入样例】

5
0 0
0 6
6 6
6 0
3 3

【输出样例】

9.00

【题解】

半平面交模板题,把多边形每一条边当成直线处理,然后做半平面交就好了。注意题中点是按照顺时针给出的,应该按照逆时针得到直线才保证直线左侧是半平面区域,稍微处理一下就好了。这道题目比较特殊,半平面交不会出现解无穷大的情况,所以可以放心大胆算面积。

本蒟蒻第一个点一直过不了OTL网上找到的代码似乎也交不过,所以特判了XD如果各位大神切了这个点,还求指点一下orz

【代码】

O(n^2)算法就可过,我写的O(nlogn)。

【HNOI2003】多边形#代码
0 0