*CCF202112-1序列查询-Java
简单的方法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n, N;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
N = sc.nextInt();
int x =0;//f[i]的和
int[] s = new int[n+1];//输入的数组
int[] f = new int[N];//f[i]初始值都为0,下面的else处需要考虑到
for(int i = 1; i <= n; i++){//读取输入的数组
s[i] = sc.nextInt();
}
//求f[i]
int i = 1, j = 1;//j:s[]的下标
for(; i < N;){
if((j <= n)&&(s[j] <= i)){//判断s[j]和i的大小,满足则把j赋值给f[i]
f[i] = j;
j++;
}else {//判断f[i]什么时候可以是和f[i-1]相同
if((f[i-1]!=0)&&(f[i]<=f[i-1])){
f[i] = f[i - 1];
}
i++;
}
}
for(int k = 0; k < N; k++){
x += f[k];
}
System.out.println(x);
}
}