ABC252B Takahashi's Failure
题目分析¶
高桥面对 $N$ 种食物,每种食物有一个美味度 $A_i$。
他不喜欢其中 $K$ 种食物,编号保存在数组 $B$ 中。
他会从美味度最高的食物中随机选择一种来吃。
题目问:他有没有可能吃到他不喜欢的食物?
解题思路¶
要解决这个问题,只需做三步:
- 找出美味度的最大值;
- 找出所有具有最大美味度的食物编号;
- 看这些编号中是否包含他不喜欢的食物,如果有,则输出
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)$ 用于存储输入数据。
总结¶
- 本题重点是:从美味度最高的食物中看是否包含不喜欢的;
- 只需判断最大值出现的位置是否在不喜欢的列表中;
- 模拟题,逻辑清晰,适合练习数组与条件判断。