题解:洛谷 AT_abc461_a Armor
【题目来源】
洛谷:AT_abc461_a [ABC461A] Armor - 洛谷
【题目描述】
高桥身穿一套盔甲。
这套盔甲可以防御所有攻击力(攻击强度以整数表示)不超过 \(D\) 的攻击,但无法防御攻击力大于 \(D\) 的攻击。
这套盔甲能否防御攻击力为 \(A\) 的攻击?
【输入】
输入从标准输入读入,格式如下:
\(A\) \(D\)
【输出】
如果盔甲能防御此次攻击,则输出 Yes;否则输出 No。
【输入样例】
4 5
【输出样例】
Yes
【核心思想】
-
问题分析:给定盔甲防御上限 \(D\) 和攻击强度 \(A\),判断盔甲能否防御该攻击。防御条件为 \(A \leq D\)。这是一个简单条件判断问题,核心在于直接比较两个整数的大小关系。
-
算法选择:
- 直接比较:判断 \(A \leq D\) 是否成立
-
关键步骤:
- 读入数据:\(A\)(攻击强度)、\(D\)(防御上限)
- 条件判断:若 \(A \leq D\),输出
Yes;否则输出No
-
时间/空间复杂度:
- 时间复杂度:\(O(1)\)
- 空间复杂度:\(O(1)\)
-
直接比较的核心思想:
- 防御条件的数学表达:盔甲能防御攻击 \(\Leftrightarrow\) 攻击强度不超过防御上限,即 \(A \leq D\)。这是一个简单的不等式判定,无需复杂计算
- 严格性注意:题目明确"不超过 \(D\)"包含等于的情况,因此条件为 \(A \leq D\) 而非 \(A < D\)。代码中的
d >= a等价于 \(D \geq A\),即 \(A \leq D\),判断正确 - 边界情况:\(A = D\) 时恰好能防御,输出
Yes;\(A = D + 1\) 时刚好无法防御,输出No - 适用于基础条件判定、大小比较类入门问题
【算法标签】
入门 #模拟
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int a, d; // 距离a,跳跃能力d
int main() // 主函数
{
cin >> a >> d; // 输入距离a和跳跃能力d
if (d>=a) // 如果跳跃能力大于等于距离
cout << "Yes" << endl; // 可以一次跳过
else // 否则
cout << "No" << endl; // 不能一次跳过
return 0; // 程序正常结束
}
【运行结果】
4 5
Yes
浙公网安备 33010602011771号