3769. 移动石子
一共有 n 个箱子排成一排,从左到右依次编号为 1∼n。
其中,第 i 号箱子中放有 ai 个石子。
现在,你可以进行最多 d 次操作。
每次操作可以将一个石子从一个箱子移动至另一个与其相邻的箱子里。
我们希望通过合理操作使得 1 号箱子内的石子数量尽可能大。
请问,这个最大可能值是多少?
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据第一行包含两个整数 n 和 d。
第二行包含 n 个整数 a1,a2,…,an。
输出格式
每组数据输出一行结果,表示答案。
数据范围
1≤T≤100,
1≤n,d≤100,
0≤ai≤100
输入样例:
3
4 5
1 0 3 2
2 2
100 1
1 8
0
输出样例:
3
101
0
package com.richard;
import java.util.Scanner;
public class AC3769 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
while (T-- != 0) {
int n = sc.nextInt(); // 有多少个元素
int d = sc.nextInt(); // 可以移几步
int res = 0;
for (int i=0; i<n; i++) {
int x = sc.nextInt(); // 每一步输入的石子数
if (i==0) {
res += x;
} else {
int t = Math.min(x,d/i); // 最多是x步 最少是看距离和石子数共同决定 d/i 是此位置可以向第一个位置移动几个石子
res += t; // 第一个加上移动的石子数
d -= i*t; // 还可以移动多少个石子
}
}
System.out.println(res);
}
}
}