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 自动生成**