2022.11.25
今晚闲来无事,在zhoj群中看到管理员发布的牛客小白月赛的通知,就和舍友一起参加了。
来源:牛客网
牛牛在幼稚园做义工,幼稚园中共有 n n n 颗树,第 1 天中午时它们的高度分别为: h 1 , h 2 , … , h n h_1,h_2,…,h_n h1,h2,…,hn(单位:厘米)。
每一天的晚上每棵树的高度都会增加 a a a 厘米,而牛牛的任务则是在第二天的清晨检查每一颗树的高度,若某颗树的高度超过了 k k k 厘米牛牛就会将它的高度修剪为 b b b 厘米。
牛牛想请你帮它计算一下第 m m m 天中午每一颗树的高度。
本题采用多组案例输入,第一行一个整数 TT 代表案例组数。
每组案例中,第一行输入一个数 n n n。
接下来一行输入 nn 个由空格分隔的整数代表: h 1 , h 2 , … , h n h_1,h_2,…,h_n h1,h2,…,hn
。
接下来一行输入三个由空格分隔的整数代表: a k b a\ k\ b a k b。
接下来一行输入一个整数代表: m m m。
保证:
0 < n , m , k ≤ 10000 0 < n,m,k \le 10000 0<n,m,k≤10000
0 < h i , b ≤ k 0 < h_i, b\le k 0<hi,b≤k
0 < a ≤ 10 0 < a \le 10 0<a≤10
单个测试点中所有案例 n n n 的和与 m m m 的和都不超过 30003000
对于每组案例,输出一行 n n n 个空格分隔的整数代表第 m m m 天中午每棵树的高度(单位:厘米),案例与案例之间用换行分隔。
注意审题,若某颗树的高度超过了 k k k 厘米牛牛就会将它的高度修剪为 b b b 厘米。
不是修剪了 b b b 厘米。
t = int(input()) # 多组案例输入,整数 T 代表案例组数
for i in range(t):
n = int(input()) # n表示有几颗树
h = list(map(int, input().split())) # h表示树的高度
a, k, b = map(int, input().split()) # 每一天的晚上每棵树的高度都会增加 a 厘米,而牛牛的任务则是在第二天的清晨检查每一颗树的高度,若某颗树的高度超过了 k 厘米牛牛就会将它的高度修剪为 b 厘米。
m = int(input())
m -= 1 # 第一天是生长,第二天才会修剪
for i in range(m):
for i in range(n):
h[i] += a # 每天都会长
if h[i] > k: # 若某颗树的高度超过了 k 厘米牛牛就会将它的高度修剪为 b 厘米。
h[i] = b # 注意,不是h[i] -= b,这表示修剪了b厘米
print(" ".join(str(i) for i in h)) # 以空格进行输出
t -= 1 # 多组案例输入,T 代表案例组