题目描述




问题分析
首先我们简化题目模型,本题中,共有两个要点:
-
A[n+1]是一个单调递增的数列,且A[0]=0,n<N
-
f(x)的定义:A[n+1]中小于x的最大数值的下标
我们要求的是0—N-1中每个f(x)之和,而A[n+1]是递增数列,因此我们不难想到可以通过遍历数组求出每个x对应的f(x)再求和。
但是由于N最大可以到 1 0 7 10^7 107,所以如果对每个x都遍历一次数组求f(x)必然导致超时,得不到满分,并且存储每一个f(x)值的时间和空间开销也较大。
此时从数组本身递增的特点下手,我们会发现在A[n+1]的相邻元素之间的取值对应的f(x)之是重复的,以样例1为例:
