1 条题解
-
0
题目翻译与重述
一块砖是一个大小为 的长条,可水平或竖直放置,其中 。
一个 的砖墙是用若干砖铺满矩形,每块砖完全在单元格内,每个单元格恰属于一块砖。
稳定性定义为 水平砖的数量 减去 竖直砖的数量。
求对于给定的 ,墙的最大可能稳定性。
题解
我们希望在满足 的条件下,尽可能多地使用水平砖,且尽可能少地使用竖直砖,以最大化 水平砖数 竖直砖数。
关键观察 1
由于每块水平砖至少占用一行中的 个连续格子,单独一行长度为 时,该行能容纳的水平砖数量最多为 。因此整个矩形的水平砖数量上界为若能达到该上界且竖直砖数量为 ,则稳定性即为该上界。
关键观察 2
任意 均可以表示为若干个 与 的和(因为除了 以外,所有整数都能用 和 组合出来)。
因此对于任意一行,我们总可以仅用长度为 或 (或更大)的水平砖将其完全填满,且水平砖数量恰好为 :- 当 为偶数时,全用 砖,数量为 ;
- 当 为奇数时,使用 砖与 砖组合,例如 时用 个 和 个 ,数量为 。
构造方案
对每一行独立进行上述水平砖的填充,整个矩形便可完全由水平砖覆盖,竖直砖数量为 。此时水平砖总数为 ,稳定性达到最大值。结论
最大稳定性即为时间复杂度 单次询问,足以通过 的数据范围。
参考代码(C++)
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int t; cin >> t; while (t--) { int64_t n, m; cin >> n >> m; cout << n * (m / 2) << '\n'; } return 0; }
- 1
信息
- ID
- 6511
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者