Problem. I

题意简述:

有一个长度为\(n\)的序列\(\{a\}\)\(a_i\in[1,m]\cap\mathbb{N_+}\)
对于\(k\in\mathbb{N_+}\)和序列\(\{a\}\),定义\(F_k(a)=\sum\limits_{i=1}^n[\exists p_1<\cdots<p_k<i,s.t.\forall j\in[1,k],a_j<a_i]\)
求出\(\forall k\in[1,n],G_k=\sum\limits_aF_k(a)\bmod{998244353}\)

数据范围:

\(n\le100000,m\le1000000000\)

解法:

考虑枚举产生贡献的位置,再枚举这个位置的数,钦定前面有\(k\)个数小于它,其它的数没有限制。答案为:
\(f_k=\sum\limits_{i=1}^nm^{n-k-1}{i-1\choose k}S(m,k)=m^{n-k-1}S(m,k){n\choose k+1}\)
其中\(S(n,m)=\sum\limits_{i=0}^{n-1}i^m=\frac1{m+1}\sum\limits_{k=0}^m{m+1\choose k}B_kn^{m+1-k}\)
然后二项式反演,前面正好\(k\)个数小于自己的方案数为:
\(g_k=\sum\limits_{i=k}^n(-1)^{i-k}{i\choose k}f_i\)
然后对\(g\)进行后缀和即可得到答案。
时间复杂度为\(O(n\log n)\)

猜你喜欢

转载自www.cnblogs.com/cjoierShiina-Mashiro/p/12358195.html