题解:洛谷 AT_abc466_a Compromise

【题目来源】

洛谷:AT_abc466_a [ABC466A] Compromise

【题目描述】

There are \(N\) choices.

You will choose one of these choices. If you choose the \(i\)-th choice, your happiness will be \(X_i\).

If your happiness will be negative no matter which choice you choose, output Yes; otherwise, output No.

\(N\) 个选项。

你将选择其中一个选项。如果你选择第 \(i\) 个选项,你的幸福值将为 \(X_i\)

如果你无论选择哪个选项幸福值都会变为负数,输出 Yes;否则,输出 No

【输入】

The input is given from Standard Input in the following format:

\(N\)
\(X_1\) \(X_2\) \(\ldots\) \(X_N\)

【输出】

Output Yes or No according to the instructions in the problem statement.

【输入样例】

4
2 0 -1 2

【输出样例】

No

【核心思想】

  1. 问题分析:给定 \(N\) 个选项,每个选项对应一个幸福值 \(X_i\)。需要判断是否无论选择哪个选项,幸福值都为负数(即所有 \(X_i < 0\))。这是一个线性扫描判定问题,核心在于检查数组中是否存在非负元素。

  2. 算法选择

    • 遍历判定:线性扫描数组,一旦发现 \(X_i \geq 0\) 即可提前终止并输出结果
  3. 关键步骤

    • 读入数据:读取 \(N\) 和数组 \(X[1..N]\)
    • 遍历检查\(i\)\(1\)\(N\)):
      • \(X_i \geq 0\):输出 No 并结束程序
    • 输出结果:若遍历完所有元素均未发现非负数,输出 Yes
  4. 时间/空间复杂度

    • 时间复杂度:\(O(N)\),最坏情况遍历全部 \(N\) 个元素
    • 空间复杂度:\(O(1)\),仅需常数额外空间(或 \(O(N)\) 存储输入数组)
  5. 线性扫描与提前终止的核心思想

    • 存在性判定:问题转化为"是否存在 \(X_i \geq 0\)",这是一个存在量词判定问题,一旦发现满足条件的元素即可确定答案
    • 提前终止优化:找到第一个非负元素后立即输出 No 并退出,避免不必要的后续遍历,最坏情况为全负数时才需完整扫描
    • 边界值处理\(X_i = 0\) 时幸福值不为负,应输出 No,因此判断条件为 \(X_i \geq 0\) 而非 \(X_i > 0\)
    • 逻辑对偶:"所有选项都使幸福值为负"等价于"不存在任何选项使幸福值 \(\geq 0\)",利用这一等价转换简化判定逻辑
    • 适用于简单条件判定、存在性检查类基础问题

【算法标签】

模拟

【代码详解】

#include <bits/stdc++.h>
using namespace std;
const int N = 15;                  // 常量:最大选项数量

int n;                             // n: 选项数量
int a[N];                          // a[i]: 选择第 i 个选项获得的幸福值

int main()
{
    cin >> n;                      // 读入选项数量

    for (int i = 1; i <= n; i++)  // 读入每个选项的幸福值
        cin >> a[i];

    for (int i = 1; i <= n; i++)  // 遍历所有选项
        if (a[i] >= 0)              // 如果存在一个选项的幸福值非负
        {
            cout << "No" << endl;  // 存在不会变负的选择,输出 No
            return 0;
        }

    cout << "Yes" << endl;         // 所有选项的幸福值都为负,输出 Yes

    return 0;
}

【运行结果】

4
2 0 -1 2
No
posted @ 2026-07-13 09:30  团爸讲算法  阅读(8)  评论(0)    收藏  举报