1 条题解
-
0
📝 题目大意
有 种伤药,第 种可以将怪兽体力增加 ( 严格递增)。怪兽当前体力为 ,目标体力至少为 ()。保证存在至少一种伤药能达到目标。求能达成目标的效果最弱的伤药编号。
💡 解题思路
-
题目分析:
- ,数据规模极小,直接模拟即可。
- 严格递增(),说明编号越大药效越强。
- ,即初始状态不满足目标,必须用药。
- 保证 (足够大),因此一定存在解。
-
算法推导:
- 按编号顺序依次读取每种伤药的效果值 。
- 对于第 种伤药,判断 是否成立。
- 由于 递增,第一个满足条件的 就是效果最弱的可行伤药编号。
- 找到后直接输出 并结束程序即可,无需继续遍历。
-
边界与细节:
- 输入保证一定有解,无需考虑无解情况。
- 已按升序给出,无需手动排序。
- 注意输出的是伤药编号(1-based),不是 的值。
⏱️ 复杂度分析
- 时间复杂度:,最多遍历 种伤药。
- 空间复杂度:,仅使用几个整数变量。
💻 标准代码 (C++)
#include<bits/stdc++.h> using namespace std; int main() { int n, h, x; cin >> n >> h >> x; // 按编号顺序遍历每种伤药(药效递增) for (int i = 1; i <= n; i++) { int a; cin >> a; // 读取第 i 种伤药的效果值 if (h + a >= x) { // 判断服用后体力是否达标 cout << i << endl; // 第一个达标的就是最弱的,输出编号 return 0; } } return 0; } -
- 1
信息
- ID
- 734
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者