【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】多边形#代码

【HNOI2003】多边形相关推荐

  1. [学习笔记]半平面交

    一个直线把平面分成两部分,就是两个半平面 处理这两个平面的交的信息,就是半平面交 推荐: 计算几何之半平面交算法模板及应用 bzoj 2618 半平面交模板+学习笔记 [总结]半平面交 可以用于求任意 ...

  2. Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形

    OpenCV 中的绘图函数 使用 OpenCV 绘制不同几何图形,其中包括的函数有 cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2. ...

  3. 绘制多边形_XDGE_RayMarchine 1- 利用Frag Shader绘制图形

    转载于小道的博客园 XDGE_RayMarchine 1- 利用Frag Shader绘制图形​www.cnblogs.com # Render/RayMarchine/Base 1- 利用Frag绘 ...

  4. matlab 填充 多边形,algorithm – 如何在MATLAB中从无序边数据创建填充多边形?

    如果多边形为 convex,则可以使用函数 CONVHULL从顶点计算凸包,并使用绘图函数 PATCH绘制多边形.例如: x = [0 1 0 1]; %# Unordered x coordinat ...

  5. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(三)使用多边形将轮廓包围

    8.3 使用多边形将轮廓包围 8.3.1 将轮廓包围的多边形函数 1.返回外部边界:boundingRect()函数 (1)作用:返回指定点集最外面的边界矩形(四个顶点) (2)函数原型:Rect b ...

  6. 使用Python,OpenCV进行涂鸦(绘制文字、线、圆、矩形、椭圆、多边形轮廓、多边形填充、箭头~)

    使用Python,OpenCV进行涂鸦(绘制文字.线.圆.矩形.椭圆.多边形轮廓.多边形填充.箭头) 1. 效果图 2. 原理 2.1 绘制线:cv2.line(canvas, (300, 0), ( ...

  7. Blender从头到尾创建低多边形角色学习教程 Low Poly Characters – Blender Bitesize Course

    从头到尾创建低多边形角色. 你会学到: Blender界面的基础. 基本建模技术. 如何遵循字符引用? 如何创造和塑造自己的角色(不同风格.发型和服装). 纹理字符. 索具和动画介绍(用于你的游戏引擎 ...

  8. 在Blender中创建惊人的低多边形动画

    大小解压后:13.5G 持续时间10小时+ 包括项目文件 1920X1080 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 标题:CGBoost学院–立方体世界在Blender中创建惊人 ...

  9. Blender从头开始装配和动画制作低多边形风格的FPS手臂

    Rigging and Animating Low Poly FPS Arms in Blender MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语 ...

最新文章

  1. MR-CNN网络结构
  2. Gartner:2019十大战略技术趋势
  3. PHP无法加载curl扩展
  4. 禁用software reporter tool.exe 解决CPU高占用率的问题
  5. codeforces1494 D. Dogeforces(构造)
  6. 基于Matlab的同态滤波彩色图像增强算法研究
  7. 【LEACH协议】基于matlab粒子群算法改进LEACH协议【含Matlab源码 2052期】
  8. Unity中世界坐标与相对于某个物体的相对坐标的转换
  9. 关于Oppen Live Writer中插入可折叠着色代码的插件
  10. Unity3D新手入门教程_游戏开发100集课程 (含粒子
  11. 弹性布局和AndroidAutoSize屏幕适配
  12. 2021年N1叉车司机找解析及N1叉车司机考试总结
  13. Oracle数据库:oracle外连接left/right/full outer join on,oracle扩展的左右外连接展示符号(+)
  14. win10 共享热点
  15. VIRTIO 前后端驱动中 GPA,HVA 转换原理
  16. 空指针异常(NullPointerException)
  17. ASP.NET profile之 找不到存储过程dbo.aspnet_CheckSchemaVersion
  18. 在家带娃有没有什么副业可以做?在家带娃的副业有哪些?
  19. iOS和Android使用同一个二维码自动跳转不同下载页面链接(附生成二维码地址方法)
  20. Odoo 8.0深入浅出开发教程(十) 附录

热门文章

  1. Cannot read property ‘$message‘ of undefined
  2. uniapp小程序一键连接wifi
  3. QT二进制流方式读写文件
  4. php 统计 字数,PHP 仿 Word 统计文章字数
  5. R语言survival包Surv函数创建生存对象、建立Cox回归模型(包含所有协变量)比较不同治疗方法生存率的差异、drop1函数计算cox回归模型自变量似然比检验值、删除冗余变量重新构建cox模型
  6. ne_comment 表
  7. 百分点认知智能实验室出品:智能问答中的对抗攻击及防御策略
  8. 递归,根据部门id获取部门树下的某个部门名称
  9. 年月日时的天干推算方法
  10. APM32F103 RTC内部时钟源秒中断例程测试