差分数组,差分数组就是找一个基准,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); } }
```