翻译

P3484 [POI2009] WYS-Isles in a Triangular Grid

@[小粉兔](/user/10703) @[览遍千秋](/user/28910)
by Eirin_Yagokoro @ 2023-01-10 16:53:30


显然不符合主题库标准 No response
by 览遍千秋 @ 2023-01-10 17:47:19


三角形网格由边长为 1 的等边三角形组成(见第 3 页)。三角形网格中的路径是网格的任意有限三角形序列(边长为 1),使得每两个连续的三角形共享一条边。 如果该形状中包含的网格的任何两个三角形通过形状中包含的三角形形成的某种路径连接,则由任何有限数量的三角形的点形成的形状称为孤岛。 图 1.1、1.2 和 1.3 中的形状是小岛。 图 1.4 中的形状不是小岛。 图 2.2、2.3 和 2.5 中的形状是全等的。 我们旨在对每个岛的系统描述,这些岛屿可以由边长为1的三角形形成,并计算有多少这样的岛屿。 每个岛屿的边界最多由十个三角形组成,是一个多边形链,由网格的单一部分组成。它可以被围绕,即 它可以在不将铅笔从纸张上拆下的情况下进行轮廓,这样它的每一段都被跟踪一次,我们回到初始点。尽管某些点必须多次越过,但可能会发生这种情况(见图2.4)。 幸运的是,在最多由十个三角形形成的岛的情况下,形状的周长是连接的(因此可以在不将铅笔从纸上分离的情况下进行轮廓化),这与图 1.2 中的形状不同。 在绕周边盘旋时,在每个单元段之后,我们转弯以下任一类型: a - 左 120 度,B - 左 60 度,c - 0 度(即实际上没有转弯),d - 右 60 度,E - 右 120 度。每个绕岛的循环可以用一个由集合中的字母组成的词来描述,其中每个字母都告诉在周长组成的每个连续单元段之后应该转哪个圈。循环描述的字母与此类单位段的数量一样多。这意味着我们还描述了多边形链的最后一段之后的转弯,即使不需要唯一确定形状。然而,这个多余的字母非常有助于将围绕形状的循环的一种描述转换为另一种仅在初始点上不同的描述。cdddcddd、dcdd、cbbbcbbb这些词描述了围绕图2.1形状的不同周期。 cbeddcde、adcabcbb、abcbbadc 这些词描述了围绕图 2.2 形状的不同循环。 acdabbcb i cddebced一词描述了围绕图2.3形状的不同循环。 如果在围绕某个形状的循环中,形状的内部一直在右侧,我们将这种循环称为顺时针循环。 对于每个小岛,人们可以确定与它全等的所有小岛的集合以及这些小岛的顺时针周期。 小岛的代码是这样的词: 它是对围绕与后者一致的某个岛屿轮廓的顺时针循环的描述,它是满足前一个条件的所有单词中字典上最小的。 对于图 2.2 和 2.3 中描述的全等小岛,我们考虑了围绕它们的所有顺时针循环: beddcdec,eddcdecb,ddcdecbe,dcdecbed,cdecbedd,decbeddc,ecbeddcd,cbeddcde和bcedcdde,cedcddeb,edcddebc,dcddebce,cddebced,ddebcedc,debcedcd,ebcedcdd,所以他们的通用代码是:bcedcdde,上面所有单词中词典最小的。 图 2.4 中描绘的小岛代码是:aadecddcddde。 编写一个程序: 对于大小岛的给定代码,生成所有大小岛屿的代码,可以通过添加一个三角形从后者获得,对于给定的整数,生成所有大小岛的代码。 输入格式: 在标准输入的第一行中,给出了一个整数 (),表示查询的数量。 以下每一行都包含某种类型的查询。 类型 1 的查询由字母 K 和最多由十个三角形组成的小岛代码组成,由单个空格分隔。 类型 2 的查询由字母 N 和整数 () 组成,由单个空格分隔。 输出格式: 查询的答案应打印到标准输出中。 对于类型 1 的查询,可以通过将孤岛中的一个三角形与给定代码描述的三角形全等来获得的不同岛代码的数量。 在下一行中,所有这些代码(用单个空格分隔)应按字典顺序打印。 对于类型 2 的查询,应打印由三角形形成的不同岛屿代码的数量。 在下一行中,所有这些代码都应按字典顺序打印。
by yuenze0416 @ 2023-05-27 10:32:31


@[yuenze0416](/user/647551) 牛b
by yuenze0416 @ 2023-05-27 10:33:00


|