公布成绩(改)解析
题目描述
有 n 个学生,第 i 个学生希望在第 t_i 天或之前得知课程的成绩。如果在第 t_i 天之前成绩公布了,他就会非常开心,每提前一天就会产生 B 点愉快度。但如果在第 t_i 天成绩没有公布,他就会等待,每等待一天就会产生 C 不愉快度。所以同学的愉快度总和,等于愉快度减去不愉快度,可以为负数。请你编写程序,根据输入的 m,计算当成绩在第 1 天到第 m 天公布时,所有学生的愉快度之和分别是多少。
输入格式
第一行三个正整数 n,m,B,C,分别表示学生的数量是 n,询问的天数是 m,每提前一天就会产生 B 愉快度。,每等待一天就会产生 C 不愉快度。 第二行 n 个正整数,表示每个学生希望的公布成绩的时间。
输出格式
输出一行 m 个空格隔开整数,第 i 个整数表示当成绩在第 i 天公布时,愉快度之和。
1 | |
代码分析
输入处理:
首先读取四个整数n,m,B,C,分别表示学生数量、询问天数、提前一天的愉快度和等待一天的惩罚。
然后读取n个整数,表示每个学生希望的公布成绩的时间。初始化结果数组:
创建一个大小为m的数组results,用于存储每一天的愉快度总和,初始值为 0。计算每一天的愉快度:
遍历每一天d(从 1 到m)。
对于每一天,遍历所有学生,计算他们的愉快度或惩罚,并累加到totalHappiness中。
如果学生希望的公布成绩时间t_i小于等于d,则计算提前公布的愉快度B \times (t_i - d)。
否则,计算延迟公布的惩罚C \times (d - t[i])。
将计算得到的totalHappiness存储到results数组中。输出结果:
遍历results数组,输出每一天的愉快度总和。
公布成绩(改)解析
https://blog.mr-onion-blog.fun/2024/11/01/公布成绩(改)解析/