题解:洛谷 AT_abc461_a Armor

【题目来源】

洛谷:AT_abc461_a [ABC461A] Armor - 洛谷

【题目描述】

高桥身穿一套盔甲。

这套盔甲可以防御所有攻击力(攻击强度以整数表示)不超过 \(D\) 的攻击,但无法防御攻击力大于 \(D\) 的攻击。

这套盔甲能否防御攻击力为 \(A\) 的攻击?

【输入】

输入从标准输入读入,格式如下:

\(A\) \(D\)

【输出】

如果盔甲能防御此次攻击,则输出 Yes;否则输出 No

【输入样例】

4 5

【输出样例】

Yes

【核心思想】

  1. 问题分析:给定盔甲防御上限 \(D\) 和攻击强度 \(A\),判断盔甲能否防御该攻击。防御条件为 \(A \leq D\)。这是一个简单条件判断问题,核心在于直接比较两个整数的大小关系。

  2. 算法选择

    • 直接比较:判断 \(A \leq D\) 是否成立
  3. 关键步骤

    • 读入数据\(A\)(攻击强度)、\(D\)(防御上限)
    • 条件判断:若 \(A \leq D\),输出 Yes;否则输出 No
  4. 时间/空间复杂度

    • 时间复杂度:\(O(1)\)
    • 空间复杂度:\(O(1)\)
  5. 直接比较的核心思想

    • 防御条件的数学表达:盔甲能防御攻击 \(\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
posted @ 2026-08-26 10:12  团爸讲算法  阅读(1)  评论(0)    收藏  举报