bzoj#P1527. [POI2005]Pun-point

[POI2005]Pun-point

题目描述

给出一个包含平面上格点的集合(格点的定义是 xxyy 坐标均为整数),我们将其称作“模式集合”。

接下来给出另外的几个包含平面上点的集合。我们想要考察后面给出的哪些集合和“模式集合”是“相似”的,即:该集合可以通过 旋转,平移,翻转,和缩放 使得该集合和“模式集合”完全相同。

例:(0,0),(2,0),(2,1){(0,0),(2,0),(2,1)} 这个集合和 (6,1),(6,5),(4,5){(6,1),(6,5),(4,5)} 这个集合是相似的,但和 (4,0),(6,0),(5,1){(4,0),(6,0),(5,-1)} 这个集合是不相似的。

你的任务是写一个程序,使得:

能从标准输入读取“模式集合”和需要考察(是否相似)的集合,判断哪些集合和“模式集合”相似,并将结果输出到标准输出。

输入格式

标准输入的第一行有一个整数 kk,代表“模式集合”中的点数

接下来 kk 行,每行两个数,用一个空格分隔,第 i+1i+1 行的两个数分别代表“模式集合”中第 ii 个点的 xx 坐标和 yy 坐标。

接下来一行一个整数 nn,代表有 nn 个需要考察的集合

接下来有 nn 个对需要考察的集合的描述:

每个描述的第一行包含一个整数 ll,代表该集合中的点数。

接下来 ll 行每行包含该集合中一个点的 xx 坐标和 yy 坐标,用一个空格分隔。

包含在同一集合中的点两两不同。

输出格式

你的程序应该向标准输出流输出 nn 行,每行代表对于一个需要考察的集合的结果。

如果第 ii 个需要考察的集合与“模式集合”相似,则第 ii 行应包含单词 TAK,即波兰语中的是。

否则第 ii 行应包含单词 NIE,即波兰语中的否。

3
0 0
2 0
2 1
2
3
4 1
6 5
4 5
3
4 0
6 0
5 -1
TAK
NIE

数据规模及约定

对于 100%100 \% 的数据 :

1k,l250001 \le k,l \le 25000

2×104x,y2×104-2 \times 10^4 \le x,y \le 2 \times 10^4xxyy 是整数。

“模式集合”中的点两两不同。