#2351. 点的集合与直线的关系

点的集合与直线的关系

📏 点的集合与直线的关系


📘 题目描述

给定二维平面上的 N 个点,判断这些点是否​共线​,即是否全部在同一条直线上。


📥 输入格式

  • 第一行一个整数 N(2 ≤ N ≤ 1000),表示点的个数;
  • 接下来的 N 行,每行两个整数 xy,表示一个点的坐标。坐标范围:-10⁴ ≤ x, y ≤ 10⁴

📤 输出格式

  • 输出一行:如果所有点在一条直线上,输出 Yes;否则输出 No

📌 输入样例 1

4
1 1
2 2
3 3
4 4

📤 输出样例 1

Yes

📌 输入样例 2

3
1 1
2 2
3 4

📤 输出样例 2

No

🧠 解题思路

我们利用向量叉积来判断是否共线:

给定三点 A(x1, y1), B(x2, y2), C(x3, y3),若它们共线,则有:

(x2x1)(y3y1)=(x3x1)(y2y1)(x2 - x1)(y3 - y1) = (x3 - x1)(y2 - y1)等价于向量 AB 和 AC 的​叉积为 0​。

所以我们只需用前两个点确定方向,然后判断其余所有点是否满足上述关系。