杂题

题意

给定\(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)\)

posted @ 2020-06-16 06:19  Grice  阅读(73)  评论(0编辑  收藏  举报