公布成绩(改)解析
题目描述
有 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/公布成绩(改)解析/