Есть сервис с n серверами, и i-й сервер имеет вычислительную мощность в единицах server. >
Пользователь может назначить k различных задач любому непрерывному сегменту серверов от индекса i до (i+k-1) для любого допустимого индекса i.
Чтобы Чтобы обеспечить согласованное поведение, мы хотим, чтобы суммы вычислительных мощностей любого из этих подмассивов были равны.
Чтобы добиться этого, мы можем заменить любой сервер новым сервером любой вычислительной мощности.< /p>
Знав массив серверов и целое число k, найдите минимальное количество серверов, которые необходимо заменить, чтобы каждый смежный подмассив из k серверов имел равную сумму вычислительных мощностей.
[*]Пример
Предположим, n = 4, сервер = [1, 2, 3, 2] и k = 2.
< /ol>
Смежные суммы составляют [(1,2), (2,3), (3,2)] = [3,5,5]
Оптимально заменять только первый сервер, => [3,2,3,2] , непрерывная сумма теперь равна [(3,2), (2,3), (3,2)] = [5,5,5]
Итак, ответ 1.
2. Пример: предположим, n = 5, сервер = [1,2,1,1,2], k = 3
непрерывная сумма = [(1,2,1), (2,1 ,1), (1,1,2)] = [4,4,4], поэтому ответ 0
Это код:
Код: Выделить всё
public static void main(String[] args) {
System.out.println(solve(2, Arrays.asList(1,2,3,2))); // correct is 1
System.out.println(solve(2, Arrays.asList(1,2,3))); // correct is 2
System.out.println(solve(3, Arrays.asList(1,2,1,1,2))); // correct is 0
}
private static int solve(int k, List server) {
// here is my code, which fails for 2nd test case.
long sum = 0;
for(int i=0; i
Подробнее здесь: [url]https://stackoverflow.com/questions/78707395/minimum-changes-needed-in-array-to-make-contiguous-elements-sum-same[/url]