1 条题解
-
0
E. Secret Box 详细题解
题目重述
有一个大盒子 ,尺寸为 (),放置在三维空间从 到 的区域内。我们要选择一个小盒子 ,其边长 均为正整数,体积 ,并将其平行于坐标轴放置,所有角点坐标为整数,且完全位于 内部(即 等)。问:在所有可能的 选择中, 可以放置的位置数最大为多少?若不存在合法的 ,输出 。
核心思路
- 若固定 ,则 的左下角(最靠近原点的角点)可以在 方向上取 到 的整数,共 个位置;同样 方向有 个位置, 方向有 个位置。因此总放置方法数为:
- 我们需要在所有满足 的正整数三元组 中,最大化上式,并输出最大值(若无合法三元组则输出 )。
数据范围与特点
- ,且所有测试用例的 各自的总和不超过 ,因此单次最多 。
- 可能很大(最大 ),但 的因子个数不会很多(最坏情况下, 时约 量级)。
- 我们可以通过枚举 和 的方式,但直接枚举 从 到 , 从 到 会达到 ,最多 ,虽然可行但可优化。更高效的方法是枚举 的所有因子作为 ,再枚举因子作为 ,这样只需枚举 种组合,其中 是 的因子个数,通常很小。
算法步骤
- 读入 。
- 枚举 的所有正因子,存入列表 。
- 对 排序(便于剪枝)。
- 初始化答案 。
- 对每个 ,若 则终止(因为 递增,后续更大)。
- 令 ( 是剩余部分)。
- 对每个 ,若 则终止。
- 若 不能被 整除,跳过。
- 否则 ,若 ,则计算:$$ways = (x - a + 1) \cdot (y - b + 1) \cdot (z - c + 1) $$并更新 。
- 输出 。
正确性证明
- 任何合法的 必须满足 , 且 ,因此 和 必须是 的因子。枚举所有因子对即可覆盖所有可能。
- 放置位置数由公式给出,取最大值即可。
- 若没有合法的 ,则 保持 ,输出 。
复杂度分析
- 预处理因子:,由于 最大约 ,,但实际 限制了 的上限,且所有测试用例的总 很小,因此枚举所有因子在时间允许范围内。
- 枚举因子对:, 通常很小(如 时约 , 时最多 ),因此 最大约 ,加上排序和循环剪枝,在 且总 和 的条件下可以轻松通过。
边界情况
- 当 时,因子只有 ,那么 ,放置方法数为 。
- 当存在 或 或 时,该三元组不可用,直接跳过。
- 若没有任何因子对满足 ,输出 。
示例验证
- 样例 :。因子有 。枚举:
- :位置数 ,最大。
- 不合法()。答案为 。
- 样例 :,因子 。最优 位置数 ,与输出一致。
- 样例 :,只有 ,位置数 ,正确。
- 样例 :,因子有 , 且 无效,答案为 。
总结
本题的关键在于将几何放置问题转化为对体积 的因子分解,并计算每个因子组合产生的放置位置数。由于 很小,枚举因子即可高效求解。注意使用 位整数存储乘积,避免溢出。
- 1
信息
- ID
- 6953
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者