题目:P9567 [SDCPC2023] Puzzle: Sashigane 题解
题目
一句话:让我们添加 L L L 形,让整个大正方形被填满(一个正方形,可以通过在外围添加一个 L L L 形,变成一个更大的正方形)。
思路
首先考虑,要被填充的矩形是个正方形,其中不能被填充的块只有一个,也可以把它看成是正方形。
往左上、左下、右下、右上四个方向按顺序加 L 形,如果在这个方向上有任意一条边到达边界了就换下一个方向。
这里借用了一张 @ Halberd_Cease 的图(上面),侵删。
图里染色的顺序是“红橙黄绿”。
一直按我们的规定加下去,原来正方形的边长每次都会 + 1 +1 +1,添加 n − 1 n-1 n−1 个 L L L 形之后,就可以填满整个正方形。
下面解释:为什么一定可以填满整个正方形。
填完一个方向过后,会出现 2 2 2 种情况:
第一种:有 2 2 2 条边触碰到外围,因为我们扩展的形状和外围的形状都是正方形,所以只需要向那两条边扩展就好了。
第二种:是有 1 1 1 条边触到外围,转向第二个方向,在第二个方向上也让一条边触到外围,然后就转换成了第一种。
温馨提示:
题目千万条,诚信第一条,代码不规范,棕名两行泪。虽然我没放,但也别抄别人的昂。