SP8055 AMR10A - Playground

题目描述

最近,我孩子的学校将一大块空地清理出来,计划把它改造成一个游乐区。这块场地是一个多边形。学校决定通过修建一条直线篱笆,将场地分成两个区域,一部分为大孩子设计,另一部分留给小孩子。这条篱笆会连接多边形的两个非相邻顶点,且所有可能的篱笆都完全位于场地之内。 通常,面积较小的区域会分配给小孩子。你能帮助学校计算出不同篱笆位置下较小游乐区的面积吗?

输入格式

第一行包含两个整数 $N$ 和 $Q$,分别表示凸多边形的顶点数和篱笆可能的位置数。 接下来的 $N$ 行每行包含两个整数 $x_i$ 和 $y_i$,代表多边形第 $i$ 个顶点的坐标。这些点按顺时针顺序给出。 接下来的 $Q$ 行每行包含两个整数 $a$ 和 $b$,表示需要在这两个点之间画一条直线篱笆。

输出格式

输出 $Q$ 行,每行对应一个查询。对于每个查询,输出较小区域的面积,结果保留一位小数,即使答案是整数,也要显示一位小数,例如若答案为 $1$,则应输出 $1.0$。

说明/提示

- $4 \le N \le 50000$ - $1 \le Q \le 50000$ - $-20,000,000 \le x, y \le 20,000,000$ - $0 \le a < b-1$ - $b < N$ **样例输入** ``` 4 2 0 0 0 1 1 2 1 0 1 3 0 2 ``` **样例输出** ``` 0.5 0.5 ``` **说明** 该多边形由点 $(0,0)$、$(0,1)$、$(1,2)$ 和 $(1,0)$ 组成。在第一个查询中,我们连接点 $(0,1)$ 和 $(1,0)$,从而形成两个区域:一个由点 $(0,0)$、$(0,1)$、$(1,0)$ 构成,另一个由点 $(0,1)$、$(1,2)$、$(1,0)$ 构成。前一个三角形的面积为 $0.5$,后一个为 $1$,因此较小的区域面积是 $0.5$。在第二个查询中,我们连接点 $(0,0)$ 和 $(1,2)$,形成的两个区域分别是:$(0,0)$、$(0,1)$、$(1,2)$ 和 $(0,0)$、$(1,2)$、$(1,0)$。这两个三角形的面积分别为 $0.5$ 和 $1$,较小的面积同样为 $0.5$。 **本翻译由 AI 自动生成**