挺 SB 的,要不是我睡过头赛时就切了。
我习惯用 \(C(n,m)\) 表示 \(n\) 个数选 \(m\) 个数的方案。
因为 \(a_i\) 升序,显然按 \([l,k),(k,r]\) 去分。
考虑暴力,然而每种方案数很难算。换个角度,考虑一个数的贡献次数。
挺显然的,假如 \(i\in[l,k)\) 那么就是 \(C(k-l,m-1)\times C(r-k,m)\),即左右各选 \(m\) 包含这个数的方案数。 \(i \in (k,r]\) 同理。
再考虑 \(a_k\),显然每种方案都有它。
暴力 Code:
#include
#include
#include
#include
#include
#include
#include
#include
显然我们不能枚举 \(m\),考虑对式子拆开,单独看一个小部分。
假如我们看
\[\dfrac{SUM(l,k-1)\times C(k-l-1,i-1)\times C(r-k,i)}{C(k-l,i)\times C(r-k,i)}
\]
发现可以化掉
\[SUM(l,k-1)*i*(k-l)
\]
那一切都挺显然的了。
#include
#include
#include
#include
#include
#include
#include
#include