1 条题解
-
0
解题思路
根据题意,需要满足两个条件:
- 必须修完整条高速公路,因此至少需要 天。
- 至少一半的路面应为高质量,即至少需要 个单位在好天气铺设。
如何计算满足第二个条件所需的最少天数(记为 )?
注意,前 天可以表示为若干个完整的 天周期(每个周期中有 个好天气),再加上剩余的 天(若 ,则可去掉最后一个 天以最小化天数)。计算方法如下:
- 先计算需要多少个完整的 周期:$\text{totalG} = \lfloor \frac{\text{needG}}{g} \rfloor \cdot (g + b)$。
- 如果 ,则加上余数 。
- 如果 ,则说明最后一个周期中实际上不需要完整的 天?这里需要再减去 ,因为最后一个 天足够后不需要后面的 天。
最终答案为 。
C++ 代码实现
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t; cin >> t; while (t--) { ll n, g, b; cin >> n >> g >> b; ll needG = (n + 1) / 2; // 至少需要的高质量天数 ll totalG = (needG / g) * (g + b); if (needG % g == 0) { totalG -= b; } else { totalG += needG % g; } cout << max(n, totalG) << '\n'; } return 0; }
- 1
信息
- ID
- 6852
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者