P3418 [POI 2005] PUN-Points
题目描述
给出一个包含平面上格点的集合(格点的定义是横纵坐标均为整数),我们将其称作“模式集合”。
接下来给出另外的几个包含平面上点的集合。我们想要考察后面给出的哪些集合和“模式集合”是“相似”的,即:该集合可以通过 旋转,平移,翻转,和缩放 使得该集合和“模式集合”完全相同。
例:$\{(0,0),(2,0),(2,1)\}$ 这个集合和 $\{(6,1),(6,5),(4,5)\}$ 这个集合是相似的,但和 $\{(4,0),(6,0),(5,-1)\}$ 这个集合是不相似的。
任务:写一个程序,使得其能从标准输入读取“模式集合”和需要考察(是否相似)的集合,判断哪些集合和“模式集合”相似,并将结果输出到标准输出
输入格式
第一行有一个整数 $k (1\le k\le 25000)$,代表“模式集合”中的点数。
接下来 $k$ 行,每行两个数,用一个空格分隔,第 $i+1$ 行的两个数分别代表“模式集合”中第 $i$ 个点的坐标 $x_i,y_i(-20000\le x_i,y_i\le 20000)$。“模式集合”中的点两两不同。
接下来一行一个整数 $n(1\le n \le 20)$,代表有 $n$ 个需要考察的集合。
接下来有 $n$ 个对需要考察的集合的描述。每个描述的第一行包含一个整数 $l(1\le l\le 25000)$,代表该集合中的点数。接下来 $l$ 行每行包含该集合中一个点的坐标 $x,y(-20000\le x,y\le 20000)$。包含在同一集合中的点两两不同。
输出格式
你的程序应该输出 $n$ 行,每行代表对于一个需要考察的集合的结果。
如果第 $i$ 个需要考察的集合与“模式集合”相似,则第 $i$ 行应输出 `TAK`,否则输出 `NIE`。