【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
- 【HNOI2003】多边形
- 多边形
- 1218: [HNOI2003]激光炸弹
- [BZOJ1218] [HNOI2003]激光炸弹
- 1216: [HNOI2003]操作系统
- bzoj1218【HNOI2003】激光炸弹
- BZOJ1218: [HNOI2003]激光炸弹
- [HNOI2003]激光炸弹
- 【bzoj1218】 [HNOI2003]激光炸弹
- [HNOI2003]激光炸弹
- 洛谷 P2278 [HNOI2003]操作系统
- 1218: [HNOI2003]激光炸弹
- 1216: [HNOI2003]操作系统
- bzoj1216 [HNOI2003]操作系统
- bzoj1216: [HNOI2003]操作系统
- bzoj1218: [HNOI2003]激光炸弹
- bzoj 1216 [HNOI2003]操作系统
- 洛谷 P2278 [HNOI2003]操作系统
- JavaScript 闭包及其机制
- ASP.NET Error:Adding the specified count to the semaphore would cause it to exceed its maximum count
- 心得总结
- 学习笔记_linux——linux基本指令
- 文件指针问题(2)
- 【HNOI2003】多边形
- android 制作9.png图片
- xcode中的get-task-allow有什么用?
- About Heartbleed
- 云计算和云数据库的上风在企业应用程序中
- LIBCURL教程
- 线程学习(五)
- 数学—杭电1412 {A} + {B}
- Hadoop中Pig,Hive和Hbase的区别