题意
给定(n)长度的序列,求(sumlimits_{l=1}^n sumlimits_{r=l}^n frac{mex(a_l,a_{l+1},cdots,a_{r-1},a_r)}{r-l+1})
做法
考虑差分统计,令(f_{i,l})为最小的位置(r)使得(mex(a_l,a_{l+1},cdots,a_{r-1},a_r)ge i)
[ans=sumlimits_{i=0}^V sumlimits_{l=1}^n sumlimits_{j=f_{i,l}-l+1}^{n-l+1}frac{1}{j}
]
令(sum_j=sumlimits_{i=1}^j frac{1}{i})
[ans=sumlimits_{i=0}^V sumlimits_{l=1}^n sum_{n-l+1}-sum_{f_{i,l}-l}
]
我们枚举(i),维护(f_{i,l})
具体的实现,枚举(i=0sim V),若出现断层则退出
对于(S={x|a_x=i}),令(m=|S|)
- (lin[1,a_1])的(f_{i,l})由(f_{i-1,l})对(a_1)取max
- (lin(a_1,a_2])对(a_2)取max
- (cdots)
- (lin(a_m,n])置为(n+1)(即非法)
由于(f_{i,l})随(l)递增不下降,所以每次相当于区间染色,这是个经典的问题,可以做到(O(nlogn))