杂题
题意
给定\(n\)长度的序列,求\(\sum\limits_{l=1}^n \sum\limits_{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=\sum\limits_{i=0}^V \sum\limits_{l=1}^n \sum\limits_{j=f_{i,l}-l+1}^{n-l+1}\frac{1}{j}
\]
令\(sum_j=\sum\limits_{i=1}^j \frac{1}{i}\)
\[ans=\sum\limits_{i=0}^V \sum\limits_{l=1}^n sum_{n-l+1}-sum_{f_{i,l}-l}
\]
我们枚举\(i\),维护\(f_{i,l}\)
具体的实现,枚举\(i=0\sim V\),若出现断层则退出
对于\(S=\{x|a_x=i\}\),令\(m=|S|\)
- \(l\in[1,a_1]\)的\(f_{i,l}\)由\(f_{i-1,l}\)对\(a_1\)取max
- \(l\in(a_1,a_2]\)对\(a_2\)取max
- \(\cdots\)
- \(l\in(a_m,n]\)置为\(n+1\)(即非法)
由于\(f_{i,l}\)随\(l\)递增不下降,所以每次相当于区间染色,这是个经典的问题,可以做到\(O(nlogn)\)