P15504 [ICPC 2025 APC] Can You Reach There?

题目描述

在二维平面上给定 $n$ 个互不相同的标记点,编号为 $1$ 到 $n$。标记点 $i$ 的坐标为 $(x_i, y_i)$。在本问题中,你会得到 $q$ 个场景,编号为 $1$ 到 $q$。在每个场景 $k$ 中,给定四个整数 $a_k$、$b_k$、$c_k$ 和 $d_k$,表示你初始位于 $(a_k, b_k)$,旨在通过任意次重复下述步骤到达 $(c_k, d_k)$。 在单步操作中,你选择两个标记点 $P$ 和 $Q$,它们可以相同。设 $S$ 表示你当前所在点,定义点 $T$ 使得 $$\overrightarrow{PT} = \overrightarrow{SQ}$$ 换言之,$T$ 的选取使得从 $P$ 到 $T$ 的向量与从 $S$ 到 $Q$ 的向量具有相同的方向和长度。然后你可以移动到线段 $ST$ 上的任意点,包括点 $T$ 本身,并且你将站立在那个新点上。 对于每个场景,判断是否可以通过所描述的步骤实现目标。注意所有场景彼此独立。

输入格式

输入的第一行包含两个整数 $n$ 和 $q$($1\le n\le 100\,000$,$1\le q\le 100\,000$)。接下来的 $n$ 行中的第 $i$ 行包含两个整数 $x_i$ 和 $y_i$($0\le x_i,y_i\le 10^9$)。输入保证没有两个标记点具有相同的坐标。 接下来的 $q$ 行表示场景。其中第 $k$ 行包含四个整数 $a_k$、$b_k$、$c_k$ 和 $d_k$($0\le a_k,b_k,c_k,d_k\le 10^9$;$(a_k,b_k)\neq(c_k,d_k)$)。

输出格式

输出 $q$ 行。第 $k$ 行应包含 **yes**(如果场景 $k$ 的目标可实现),否则输出 **no**。

说明/提示

**样例输入/输出 #1 的解释** 有两个标记点 $(10, 0)$ 和 $(0, 10)$。在场景 1 中,从点 $S = (a_1, b_1) = (3, 4)$ 出发,目标实现过程如下: - 第一步,选择 $(10, 0)$ 作为 $P$,$(0, 10)$ 作为 $Q$。确定点 $T$ 的坐标为 $(7, 6)$。移动到点 $(40/7, 75/14)$,该点位于线段 $ST$ 上。(图 M.1 (a)) - 下一步,选择 $(10,0)$ 同时作为 $P$ 和 $Q$。确定点 $T$ 的坐标为 $(100/7, -75/14)$。从那里可以到达点 $(c_1, d_1) = (6, 5)$。(图 M.1 (b)) 在场景 2 中,从 $S = (a_2, b_2) = (4, 0)$ 出发。选择 $(10,0)$ 同时作为 $P$ 和 $Q$。确定点 $T$ 的坐标为 $(16, 0)$。点 $(c_2, d_2) = (7, 0)$ 在线段 $ST$ 上,因此一步即可到达。(图 M.1 (c)) 在场景 3 中,目标同样可实现。 在场景 4 中,可以证明从 $(a_4, b_4) = (123, 456)$ 到达点 $(c_4, d_4) = (789, 0)$ 是不可能的。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/ng4iaq46.png) 图 M.1:样例输入 #1 中场景的图示。 ::: 翻译由 DeepSeek 完成