跳转至

ABC252B Takahashi's Failure

题目分析

高桥面对 $N$ 种食物,每种食物有一个美味度 $A_i$。
他不喜欢其中 $K$ 种食物,编号保存在数组 $B$ 中。

他会从美味度最高的食物中随机选择一种来吃。
题目问:他有没有可能吃到他不喜欢的食物?


解题思路

要解决这个问题,只需做三步:

  1. 找出美味度的最大值;
  2. 找出所有具有最大美味度的食物编号;
  3. 看这些编号中是否包含他不喜欢的食物,如果有,则输出 Yes,否则输出 No

实现步骤

  • 定义数组 A[105] 存美味度;
  • 定义数组 B[105] 存不喜欢的食物编号;
  • 找出 A 中的最大值 maxA
  • 遍历数组 B 中的每个元素 b,即 int b = B[i]
    • 如果 A[b] == maxA,说明不喜欢的食物中存在最大美味度的;
    • 立即输出 Yes 并结束程序;
  • 如果遍历完都没有满足条件,输出 No

复杂度分析

  • 时间复杂度:$O(N + K)$
  • 找最大值:$O(N)$;
  • 遍历不喜欢的食物检查:$O(K)$;
  • 空间复杂度:$O(N + K)$ 用于存储输入数据。

总结

  • 本题重点是:从美味度最高的食物中看是否包含不喜欢的;
  • 只需判断最大值出现的位置是否在不喜欢的列表中;
  • 模拟题,逻辑清晰,适合练习数组与条件判断。