题意
给定一堵宽 l l l 高 h h h 的墙面,用 1 × 3 1 \times 3 1×3 尺寸的砖块铺墙面,求出铺的最小数量的砖块。
分析
首先对于墙面宽 l l l 进行分类讨论:
-
l l l 为奇数的情况:由于砖块尺寸是 1 × 3 1 \times 3 1×3,那么不难想到,在墙面的左边或右边铺上 1 × 3 1 \times 3 1×3 的砖块,中间总会剩下若干个 1 × 2 1 \times 2 1×2 的砖块,那么不难想到最小数量就是 h h h。
-
l l l 为偶数的情况:只要在墙面的左右两边铺上 1 × 3 1 \times 3 1×3 的砖块,那么这样一共有 ⌊ h 2 ⌋ \lfloor \frac{h} 2 \rfloor ⌊2h⌋ 行,所以答案就是 ⌊ h 2 ⌋ × 2 \lfloor \frac{h} 2 \rfloor \times 2 ⌊2h⌋×2。
分类讨论结束后,根据条件判断并输出即可,代码十分简短。
Code
// P12105 [NWRRC2024] Another Brick in the Wall
#include <cstdio>
using namespace std;
int l, h;
signed main() {
scanf ("%d%d", &l, &h);
// 分类讨论,l 为偶数
if (l % 2 == 1) printf ("%d", h);
// l 为奇数
else printf ("%d", 2 * (h / 2));
return 0;
}
完结撒花。