其他分享
首页 > 其他分享> > Codeforces 1608F. MEX Counting (3200)

Codeforces 1608F. MEX Counting (3200)

作者:互联网

题目描述

给定一个长度为 \(n\) 的序列 \(b\),需要计算满足下列条件的序列 \(a\) 的个数,答案对 \(998244353\) 取模。

\(1\le n\le 2000,1\le k\le 50,b_i\in[-k,n+k]\)。


考虑 \(\text{dp}\)。

设 \(f_{i,j,k}\) 表示填完前 \(i\) 个数,\(\text{mex}\) 为 \(j\),有 \(k\) 种 \(>j\) 的值的方案数。

转移考虑两种情况。

时间复杂度是 \(O(n^2k^2)\),考虑优化 \(\text{mex}\) 改变的地方。可以发现 \(f_{i+1,y,k-(x-j-1)}\) 往后转移时会乘 \((k-(x-j-1))!\),与当前转移过去抵消。

于是可以设 \(g_{i,j,k}=k!f_{i,j,k}\)。那么转移变成

标签:le,3200,cdot,text,1608F,forall,Counting,mex,rightarrow
来源: https://www.cnblogs.com/Samsara-soul/p/Codeforces-1608F-solution.html