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 代表案例组