bzoj#P2349. [Baltic2011]Polygon

[Baltic2011]Polygon

题目描述

一个有 nn 个顶点的简单多边形,画在一个无限大的矩形网格中。对于这样的多边形,只有相邻的两边在它们共同的顶点处相交;没有其它边相交或有接触。该多边形的顶点都在网格的网点上,也就是说,多边形的顶点都是整数坐标。

你的任务是得到严格地处于给定的多边形中的网格线的总长度(这些网格的线段片段在下面的图中着重描出了)。

输入格式

第一行包括一个整数 nn,即多边形的顶点数。 以下 nn 行包括 22 个整数 xxyy,即顶点的坐标。顶点将按顺时针或逆时针顺序给出。所有顶点均不相同,但可能有连续 22 个以上的顶点是在同一条直线上的。

输出格式

输出只有一行,给出一个带小数部分的数(decimal number):严格地处于给定的多边形中的网格线的总长度。

样例输入

3
5 1
2 4
1 1

样例输出

10.0

样例说明

Failed loading image.
水平的线段总长度为 43+83=4\frac{4}{3}+\frac{8}{3}=4,垂直的线段总长度为 3+2+1=63+2+1=6。总长度为 4+6=104+6=10

数据规模与约定

对于 50%50\% 的数据,所有多边形的边都处于网格线上。
对于 100%100\% 的数据,3n1053 \leq n \leq 10^55×108x,y5×108 -5\times10^8 \leq x,y \leq 5 \times 10^8

评分方式

若你的输出与标准答案足够接近即可判正确。 更准确地说:假设你的输出为 LL,标准答案为 RR。那至少以下两个条件至少要有一条成立:

  1. LRr106|L - R| \leq r\cdot10^{-6}(相对精确)
  2. LR106|L - R| \leq 10^{-6}(绝对精确)