差分数组,差分数组就是找一个基准,D[i]=A[i]-A[i-1]表示第i个元素比前一个元素大D[i],那么从0到i的累加和就是D[i]比第0项大多少。
如果使得第0项为0,然后在经过一系列变化,通过再与第0项对比就知道现在变化了多少,第0项在变化过程前后没有产生变化,因为它是基准。
``` java
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int k = scanner.nextInt();
int cnt = 0;
int[] router = new int[n];
for(int i = 0; i < n; i++){
int signal = scanner.nextInt();
int start = Math.max(i - signal, 0);//router[0]=router[0]-router[-1],router[-1]=0没有具体表示出来;
router[start]++;
if(signal + i + 1 < n){
router[signal + i + 1]--;
}
}
int sum = 0;
for(int i = 0; i < router.length; i++){
sum += router[i];
if(sum >= k){
cnt++;
}
}
System.out.println(cnt);
}
} ```

京公网安备 11010502036488号