1 条题解
-
0
📝 题目大意
有 道题目,第 题分数为 。Snuke 解决了 道题,编号为 。求他获得的总分。
💡 解题思路
- 题目分析:,数据范围很小,直接模拟即可。 严格递增且 ,无需额外校验。
- 算法推导:
- 读入 以及数组 (每题的分数)。
- 遍历 个已解决的题目编号 ,由于编号从 开始而数组下标从 开始,因此取 累加到
sum中。 - 输出
sum。
- 边界与细节:注意 是 -based 索引,访问数组时需减 。累加变量
sum需初始化为 。
⏱️ 复杂度分析
- 时间复杂度:,遍历 数组和 数组各一次。
- 空间复杂度:,存储 和 两个数组。
💻 标准代码 (C++)
#include <bits/stdc++.h> using namespace std; int main() { int n, m, sum = 0; cin >> n >> m; int a[n]; // 存储每道题的分数 int b[m]; // 存储已解决题目的编号(1-based) for (int i = 0; i < n; i++) cin >> a[i]; // 读入每题的分数 for (int i = 0; i < m; i++) { cin >> b[i]; // 读入已解决的题目编号 sum += a[b[i] - 1]; // 编号转下标(1-based → 0-based),累加分数 } cout << sum << endl; return 0; }
- 1
信息
- ID
- 688
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者