NC246909. 幼稚园的树
描述
输入描述
本题采用多组案例输入,第一行一个整数 代表案例组数。
每组案例中,第一行输入一个数 。
接下来一行输入 个由空格分隔的整数代表:。
接下来一行输入三个由空格分隔的整数代表:。
接下来一行输入一个整数代表:。
保证:
单个测试点中所有案例 的和与 的和都不超过
输出描述
对于每组案例,输出一行 个空格分隔的整数代表第 天中午每棵树的高度(单位:厘米),案例与案例之间用换行分隔。
示例1
输入:
2 6 1 10 100 200 120 230 5 230 200 7 5 1 2 3 4 5 10 5 2 1
输出:
31 40 130 230 150 225 1 2 3 4 5
Go 解法, 执行用时: 39ms, 内存消耗: 1024K, 提交时间: 2023-08-11 09:42:29
package main import ( "fmt" ) func main() { T, n, a, k, b,m := 0,0,0,0,0,0 fmt.Scanf("%d",&T) for T > 0 { T-- fmt.Scanf("%d",&n) ans := make([]int,n) for i := 0; i < n; i++ { fmt.Scanf("%d",&ans[i]) } fmt.Scanf("%d %d %d",&a,&k,&b) fmt.Scanf("%d",&m) for i := 0; i < n; i++ { for j := 0; j < m-1; j++ { ans[i] += a if ans[i] > k { ans[i] = b } } } for i := 0; i < len(ans)-1; i++ { fmt.Printf("%d", ans[i]) fmt.Printf(" ") } fmt.Printf("%d", ans[len(ans)-1]) fmt.Println() } return }
Go 解法, 执行用时: 42ms, 内存消耗: 1008K, 提交时间: 2023-08-11 09:42:06
package main import ( "fmt" ) const M int = 1e5 var h [M + 5]int func work() { var n int fmt.Scan(&n) for i := 1; i <= n; i++ { fmt.Scan(&h[i]) } var a, b, k, m int fmt.Scan(&a, &k, &b, &m) for i := 1; i <= m; i++ { for j := 1; j <= n; j++ { if h[j] > k { h[j] = b } if i < m { h[j] += a } } } for i := 1; i <= n; i++ { fmt.Print(h[i]) if i < n { fmt.Printf(" ") } else { fmt.Printf("\n") } } } func main() { var T int fmt.Scan(&T); for ca := 1; ca <= T; ca++ { work() } }
Python3 解法, 执行用时: 555ms, 内存消耗: 4816K, 提交时间: 2023-08-11 09:40:54
t = int(input()) for i in range(t): n = int(input()) h = [int(i) for i in input().split()] a, k, b = map(int, input().split()) m = int(input()) if m == 1: for i in h: print(i, end=" ") print() else: for i in range(m-1): h1 = [i+a for i in h] h2 = [b if i>k else i for i in h1 ] h = [i for i in h2] for i in h2: print(i, end=" ") print()
Java 解法, 执行用时: 407ms, 内存消耗: 22036K, 提交时间: 2023-08-11 09:39:05
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); for(int i=0;i<t;i++) { int n = in.nextInt(); int[] h = new int[n]; for(int j=0;j<n;j++) { h[j] = in.nextInt(); } int a = in.nextInt(); int k = in.nextInt(); int b = in.nextInt(); int T = in.nextInt(); for(int m = 1;m<T;m++) { for(int x=0;x<n;x++) { h[x]+=a; if(h[x]>k) { h[x] = b; } } } for(int y=0;y<n;y++) { System.out.print(h[y]+" "); } System.out.println(); } } }