1 条题解
-
0
A. 搭建帐篷 详细题解
题目核心理解
有三类人员: 个内向者、 个外向者、 个通用者。 每顶帐篷最多容纳 人,且必须满足:
- 内向者必须独占一顶帐篷(每顶仅 人)。
- 外向者所在帐篷必须恰好 人。
- 通用者无任何限制。
目标:求出满足所有条件的最小帐篷数,无法满足则输出 。
核心思路
1. 关键性质
- 内向者无组合可能,直接占用 顶帐篷。
- 外向者必须以 人为一组,不足 人的部分必须用通用者补齐,否则无解。
- 通用者优先用于补齐外向者,剩余部分每 人一组以最小化帐篷数。
2. 计算规则
设: ,表示为了让所有外向者凑成完整 人组还需要的人数。
条件判断:
- 若 :无需通用者补齐,直接使用 顶帐篷。
- 若 :
- 若 ,无解。
- 否则用 个通用者补齐,消耗 个通用者。
3. 最终计算
补齐后,总帐篷数为: 内向者帐篷数 外向者完整组数 剩余通用者组数(向上取整)。
算法流程
- 答案初始值为 (内向者占用的帐篷数)。
- 计算外向者对 取余的结果,得到需要补齐的人数 。
- 若需要补齐且通用者不足,输出 。
- 若足够补齐,扣去对应的通用者,加入外向者占用的帐篷数。
- 剩余通用者每 人一顶,向上取整后加入答案。
公式与复杂度分析
有解时的通用公式:
$$ans = a + \dfrac{b+d}{3} + \left\lceil \dfrac{c-d}{3} \right\rceil $$整数运算等价形式:
复杂度
每组测试用例仅进行简单算术运算。 时间复杂度:。 可轻松处理 、测试用例数 的数据范围。
- 1
信息
- ID
- 6189
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者