1 条题解
-
0
夏日水费 题解
题意简述
给定 个用水量 ,按照三段阶梯水价分别输出应缴水费:
$$f(x)=\begin{cases} 3x & x \le 10\\ 30 + 5(x-10) & 10 < x \le 30\\ 130 + 8(x-30) & x > 30 \end{cases}$$思路
本题是基础的分类讨论 + 模拟题。对每个 判断其落在哪一段区间,用对应公式计算即可。
注意两点:
- 边界处理:第 2 段是 ,第 3 段是 , 与 恰好是分段点,判断时要用
x <= 10和x <= 30依次判断,避免重复或遗漏。 - 数据范围: 可达 , 可达 ,最大水费约为 ,远超
int范围,务必使用long long。
复杂度
- 时间复杂度:
- 空间复杂度:
参考代码
#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 x; cin >> x; ll ans; if (x <= 10) ans = 3 * x; else if (x <= 30) ans = 30 + 5 * (x - 10); else ans = 130 + 8 * (x - 30); cout << ans << '\n'; } return 0; }分档说明
子任务 分数 约束 说明 1 30 直接模拟即可 2 10 所有 答案恒为 ,可特判 3 60 无特殊限制 需 模拟并注意 long long - 边界处理:第 2 段是 ,第 3 段是 , 与 恰好是分段点,判断时要用
- 1
信息
- ID
- 251
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 144
- 已通过
- 25
- 上传者