牛客小白月赛62 幼稚园的树

2022.11.25
今晚闲来无事,在zhoj群中看到管理员发布的牛客小白月赛的通知,就和舍友一起参加了。
牛客小白月赛62 幼稚园的树_第1张图片

题目描述

来源:牛客网
牛牛在幼稚园做义工,幼稚园中共有 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,k10000
0 < h i , b ≤ k 0 < h_i, b\le k 0<hi,bk
0 < a ≤ 10 0 < a \le 10 0<a10
单个测试点中所有案例 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 代表案例组

你可能感兴趣的:(牛客小白月赛,python,算法)