#P14871. [OOI2024 资格赛]Lunch午餐
[OOI2024 资格赛]Lunch午餐
题目描述
给定一个有 个点的凸多边形。不保证任意三点不共线。多边形内部有 个互不相同的特殊点。此外还给定一个点 ,坐标为 ,它位于凸多边形内部,且不在边界上。
Alice 和 Bob 玩一个游戏,Alice 先手,双方轮流行动。每一回合,玩家必须选择多边形上一个不同于 的顶点,并把它移动到点 。如果多边形中已经有顶点位于 ,那么这些顶点会合并。
一次移动合法,当且仅当存在某个特殊点,它在移动前位于多边形内部,但在移动后不再位于多边形内部。保证无论经过多少次移动,特殊点都不会恰好位于多边形边界上。
移动之后,多边形不要求继续保持凸性,也可以退化,例如退化成一条线段。无法行动的玩家输掉游戏。
还有 次修改,分为两种类型:
+ x y:坐标为 的点变为特殊点。保证该点此前不是特殊点。- x y:坐标为 的点不再是特殊点。保证该点此前是特殊点。
在初始状态以及每次修改之后,都需要判断如果双方都采取最优策略,谁会获胜。每次修改后,游戏都从初始多边形重新开始,只是特殊点集合变为修改后的集合。
输入格式
第一行包含三个整数 (,,),分别表示多边形点数、特殊点数量和修改次数。
第二行包含两个整数 (),表示点 的坐标。保证 在给定多边形内部且不在边界上。
接下来 行,每行包含两个整数 (),表示多边形第 个点的坐标。点按逆时针顺序给出。
接下来 行,每行包含两个整数 (),表示第 个特殊点的坐标。保证任意时刻特殊点互不相同且位于多边形内部。
接下来 行,每行包含一个字符 和两个整数 ,其中 为 + 或 -,表示一次修改:
- 若 ,则点 变为特殊点。保证此前它不是特殊点;
- 若 ,则点 不再是特殊点。保证此前它是特殊点。
保证任意时刻,经过任意次合法移动后,所有特殊点都不会位于多边形边界上。
输出格式
输出 行。
第一行输出初始特殊点集合下的胜者。如果 Alice 必胜,输出 Alice;否则输出 Bob。
之后第 行输出第 次修改后的胜者,格式同上。
样例 #1
样例输入 #1
5 5 3
0 3
-4 -2
1 -4
5 0
1 4
-4 2
0 -1
-2 -1
-1 0
0 -3
-1 2
+ 4 0
+ -2 2
+ 0 2
样例输出 #1
Alice
Bob
Bob
Bob
样例解释
修改前的多边形如下:

初始凸多边形、点 和特殊点。
第一步,Alice 可以移动坐标为 的多边形顶点,移动后多边形如下:

Alice 第一步移动后的多边形。
在这个状态下,Bob 已经无法行动,因此 Bob 输掉游戏。
评分方式
测试数据包含 6 个测试组。只有通过该组以及若干指定的前置测试组,才能获得该组分数。Offline-testing 表示该组结果只会在比赛结束后公布。
| 组别 | 分数 | 附加限制 | 附加限制 | 附加限制 | 依赖组 | 备注 |
|---|---|---|---|---|---|---|
| 0 | - | - | 样例 | |||
| 1 | 16 | - | ||||
| 2 | 13 | 1 | ||||
| 3 | 15 | - | 0-2 | |||
| 4 | 17 | 1,2 | ||||
| 5 | 21 | 0-2,4 | ||||
| 6 | 18 | - | 0-5 | Offline-testing | ||