题目
题目大意是这样的:在一条双向的轴上,有若干同学在跑步,每位同学的速度是固定的,都是1单位长度/s。在n个时刻t,位置
x上将至少有一个人在跑步,但是方向不确定,仅能确定有人。
需要求解的问题就是根据这n个时刻的信息,问能确定最少有多少同学在跑步?
二分图匹配
首先这个问题,以时间为横轴,位置为纵轴建系x-t图像,将n个数据描点。
题目中提到学生跑步有起始时间和终止时间,反映在坐标系上就是一条线段。但是由于题目要求的是最小的学生数量,因此不妨假设学生跑步时间是无限长,且开始的无限早,这反映在坐标系上就是一条直线。
也就是说倘若一个学生在向正方向跑,那么其跑出的直线斜率为1,反之斜率为-1。
如果两个点描述的是同一个学生,那么这两个点就在同一条直线上。
那么问题就转变成了给定n个点,使用斜率为1或者-1的直线覆盖这些点,问最少直线数量是多少?
斜率为-1或1不太好处理,我们不妨将坐标轴顺时针旋转45°。
我们假设原横纵坐标为t,p;
可使用矩阵乘法进行旋转:
[ x y ] = [ 1 1 1 − 1 ] [ t p ] \begin{bmatrix} x\\ y \end{bmatrix}= \begin{bmatrix} 1 & 1\\ 1 & -1 \end{bmatrix} \begin{bmatrix} t\\ p \end{bmatrix} [xy]=[111−1][tp]
即:
{ x = t + p y &#