P9567 [SDCPC2023] Puzzle: Sashigane 题解

题目:P9567 [SDCPC2023] Puzzle: Sashigane 题解

题目

P9567 原题传送门

一句话:让我们添加 L L L 形,让整个大正方形被填满(一个正方形,可以通过在外围添加一个 L L L 形,变成一个更大的正方形)。

思路

首先考虑,要被填充的矩形是个正方形,其中不能被填充的块只有一个,也可以把它看成是正方形。

往左上、左下、右下、右上四个方向按顺序加 L 形,如果在这个方向上有任意一条边到达边界了就换下一个方向。

这里借用了一张 @ Halberd_Cease 的图(上面),侵删。

图里染色的顺序是“红橙黄绿”。

一直按我们的规定加下去,原来正方形的边长每次都会 + 1 +1 +1,添加 n − 1 n-1 n1 L L L 形之后,就可以填满整个正方形。

下面解释:为什么一定可以填满整个正方形。

填完一个方向过后,会出现 2 2 2 种情况:

第一种:有 2 2 2 条边触碰到外围,因为我们扩展的形状和外围的形状都是正方形,所以只需要向那两条边扩展就好了。

第二种:是有 1 1 1 条边触到外围,转向第二个方向,在第二个方向上也让一条边触到外围,然后就转换成了第一种。

温馨提示:

题目千万条,诚信第一条,代码不规范,棕名两行泪。虽然我没放,但也别抄别人的昂。

The end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值