P9723 [EC Final 2022] Chinese Checker

题目描述

棋盘上有 $n$ 个棋子,你需要求对于当前局面,下一次移动有多少种不同的走法。 一次移动由若干步组成。假设当前要移动的棋子为 $a$,在每一步中,首先需要选择另一个棋子 $b$ 作为跳台,然后将 $a$ 走到关于 $b$ 的对称位置(在一次移动中,你无法更改需要移动的棋子 $a$。并且在某一步中,棋子 $a$ 回到此次移动前所在的位置是不被允许的)。 关于跳台 $b$ 的选择有一些条件: - $a$ 和 $b$ 之间的连线应当平行于棋盘的某条坐标轴。注:棋盘上一共有三条坐标轴,其中一条与水平线平行,并且任意两条坐标轴之间的夹角均为 $\frac{\pi}{3}$。 - $a$ 和 $b$ 不必相邻。 - 除了跳台 $b$ 以外,$a$ 和其关于 $b$ 的对称点的连线上不能有其他棋子。 - 对称点的位置应当落在棋盘上,并且没有被其他棋子占据。 一次移动需要至少走一步。在第一步以后,你可以随时停下来。你可以选择棋盘上任意一个棋子作为移动棋子。请输出有多少种不同的走法。 两种走法不同当且仅当两次移动后所有棋子的位置组成的集合不同,并且棋子之间不可区分。

输入格式

第一行一个整数 $T$,表示数据组数。 对于每组数据,第一行一个整数 $n$,表示棋子数量。 接下来 $n$ 行,每行两个整数,表示棋子位置。第一个整数表示棋子所在行,第二个整数表示棋子所在列(棋子在这一行的第几个位置上,注意每一行的起始位置和列数有可能是不一样的)。行列的编号从 $1$ 开始,分别从上到下,从左到右递增。 保证每个棋子的位置互不相同。

输出格式

输出 $T$ 行,每行一个整数,表示不同走法的数量。