专栏文章

题解:P12105 [NWRRC2024] Another Brick in the Wall

P12105题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@mipg5big
此快照首次捕获于
2025/12/03 11:27
3 个月前
此快照最后确认于
2025/12/03 11:27
3 个月前
查看原文

题意

将一面 h×lh \times l 的墙面,全部用 1×31 \times 3 填充。求最最少的砖块数量。

推导

  1. 考虑按着行放,如果 l=3nl=3nnn 为一行的砖块数)成立(即:单行是 33 的倍数)就按这样贴,答案就是:h×nh \times n
  2. 如果不满足,那么就是照其余数而定。余数是 tt 就按列放 tt 块。但是每一块列放的砖会影响到后面两行,所以有必要将 hh 判断一下。

可以推导出一个通用公式:ans=l3×h+h3×(lmod3)ans=\lfloor \frac{l}{3}\rfloor \times h+\lceil \frac{h}{3}\rceil \times (l \bmod 3)

代码

CPP
#include <cstdio>
using namespace std;

int main() {
    int l, h;
    scanf("%d%d", &l, &h);
    int base = l / 3;         // 每行横向砖块数
    int remain = l % 3;       // 剩余宽度
    int vertical = (h + 2) / 3; // 纵向铺设次数(向上取整)
    printf("%d\n", base * h + vertical * remain);
    return 0;
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...