C++ 实现计算不同天数公布成绩时学生的愉快度之和
以下是使用 C++ 实现该功能的代码: ```cpp #include <iostream> #include <vector> int main() { int n, m, B, C; // 输入学生数量 n、询问天数 m、提前一天的愉快度 B 和等待一天的不愉快度 C std::cin >> n >> m >> B >> C; std::vector<int> t(n); // 输入每个学生希望公布成绩的时间 for (int i = 0; i < n; ++i) { std::cin >> t[i]; } // 遍历每一天,计算当天公布成绩时的愉快度之和 for (int day = 1; day <= m; ++day) { int total_happiness = 0; for (int i = 0; i < n; ++i) { if (day <= t[i]) { // 如果成绩在学生期望时间之前公布,计算提前的天数并乘以 B total_happiness += (t[i] - day) * B; } else { // 如果成绩在学生期望时间之后公布,计算等待的天数并乘以 C total_happiness -= (day - t[i]) * C; } } // 输出当天公布成绩时的愉快度之和 std::cout << total_happiness; if (day < m) { std::cout << " "; } } std::cout << std::endl; return 0; } ``` ### 代码解释: 1. **输入处理**:首先读取学生数量 `n`、询问天数 `m`、提前一天的愉快度 `B` 和等待一天的不愉快度 `C`。然后读取每个学生希望公布成绩的时间,存储在向量 `t` 中。 2. **计算愉快度之和**:使用一个外层循环遍历从第 1 天到第 `m` 天,对于每一天,使用内层循环遍历每个学生,根据成绩公布的时间和学生期望的时间计算愉快度或不愉快度,并累加到 `total_happiness` 中。 3. **输出结果**:输出每一天公布成绩时的愉快度之和,每个结果之间用空格隔开。 ### 复杂度分析: - **时间复杂度**:$O(nm)$,其中 $n$ 是学生的数量,$m$ 是询问的天数。 - **空间复杂度**:$O(n)$,主要用于存储每个学生希望公布成绩的时间。 ######[AI问答 | 594点数解答 | 2026-05-01 15:41:39]
- C 语言:快速实现 5 个学生信息录入、按成绩升序排序并输出!(字节豆包 | 373点数解答 | 2024-10-30 00:37:20)426
- C语言实现:输入5名学生信息并按成绩升序排序输出(字节豆包 | 354点数解答 | 2024-10-30 18:45:58)371
- C语言:输入5个学生信息,按成绩升序排序并输出(字节豆包 | 373点数解答 | 2024-10-31 19:49:58)366
- C语言:输入5名学生信息并按成绩升序排序输出(字节豆包 | 326点数解答 | 2025-01-01 20:11:47)363
- 成绩等级统计:20个60 - 100分成绩的等级数量揭秘(字节豆包 | 219点数解答 | 2025-04-09 10:20:32)237
- 培训机构学员成绩与年龄更新:C++ 代码实现(DeepSeek | 186点数解答 | 2025-12-16 18:04:31)79
- Python 处理培训机构学员培训后年龄与 NOIP 成绩提升情况(DeepSeek | 73点数解答 | 2025-12-16 18:05:20)83
- 培训机构学员成绩提升:C++代码实现年龄与NOIP成绩更新(DeepSeek | 178点数解答 | 2025-12-31 12:20:24)75
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)371
- C++ 实现学生成绩统计:最高分、最低分、不及格与优秀人数计算(字节豆包 | 489点数解答 | 2026-04-12 10:09:58)11
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)69
- 深入探究:n 位格雷码中编号 k 二进制串的求解算法与实现(DeepSeek | 726点数解答 | 2026-01-13 12:31:37)68