D 博士对物理有着深入的研究,经典物理、天体物理、量子物理都有着以他的名字命名的定理。最近 D 博士着迷于研究粒子运动的无规则性。对圣经深信不疑的他相信,上帝创造的任何事物必然是有序的、有理可循的,而不是无规则的、混沌的。 经过长时间的研究,D 博士找到了很多出现相当频繁的轨迹片断,他把这些轨迹片断储存在一个很大的数据库内。他需要你帮助他写一个程序,对于一个给出的粒子运动轨迹,统计数据库中每个轨迹片断的出现的次数。 为清楚起见,我们定义一个粒子的轨迹为二维平面上的一个点列($P_1, P_2, … P_N$)。点列 $P$ 的一个子列 $[i, j]$ 定义为 $P$ 中一段连续的子序列($P_i, P_{i+1}, … P_j$)。点列 $P$ 的一个子列 $[u, v]$ 被称为点列 $Q = (Q_1, Q_2 …Q_{v-u+1})$ 在 $P$ 中的一次出现,当且仅当 $Q$ 经过有限次的平移、旋转、翻转、放缩之后得到 $Q'$ 满足$Q'_k = P_{u+k-1}$($k =1 … u – v + 1$)。
对平面 $X-Y$ 进行四种操作的解释:
- 平移:设平移向量为 $(dx, dy)$,则任意点 $(x,y)$ 平移后的结果为 $(x+dx, y+dy)$
- 旋转:设旋转角为 $t$,则任意点 $(x,y)$ 旋转后的结果为 $(x \cos t - y \sin t, x \sin t + y \cos t)$
- 翻转:任意点 $(x,y)$ 翻转后的结果为 $(x, -y)$
- 放缩:设放缩比例为 $p (p ≠ 0)$,则任意点 $(x,y)$ 放缩后的结果为 $(px,py)$