闲话

所以 cd 为啥突然学 gf
然后整出来一大堆奇怪的(初学者可能会有的)问题
建议来问我(
我还能乐呵乐呵(

EI:那你以后要知道这不奇怪
EI:小学生在初学负数时也会有疑惑

今日推歌:REWRITER - 八王子P feat. GUMI

杂题

我担心今天只有这一道了(

ABC278Ex

一个非负整数序列 \(S\) 是好的,当且仅当 \(S\) 存在一个非空子序列 \(T\),满足 \(T\) 中所有元素的异或和为 \(1\)

有一个初始为空的序列 \(A\),以及 \(2^m\) 张写着数字的卡片;卡片上的数字取遍 \([0, 2^m)\) 中的整数。你可以自由选择一张卡片,将这张卡片上的数字放在 \(A\) 序列的末尾,并删除这张卡片,以后不能再选择它。你会一直进行这个操作,当 \(A\) 成为好的序列后停止。

给定 \(n, m\),求停止操作时长度为 \(n\) 的不同 \(A\) 序列数。答案对 \(998244353\) 取模。

\(1\le n\le 2\times 10^5, \ 1\le m \le 10^7,\ n\le 2^m\)

想装b 去选金牌题做 然后发现哪个都不可做就跑路了 找了个这个题
增加水题提交数(

前置知识

题目中的生成方式等价于钦定序列 \(S\) 中数字互异。

\(A_n\) 是长度为 \(n\) 的好序列数量(数字不必两两不同),则答案即为 \(A_n - A_{n - 1} \times (2^m - n + 1)\)。这转化使我们可以简单容斥,用长度为 \(n\) 的序列总数减去数字互异的坏序列数就是答案。下面只需要计算数字互异的坏序列数即可。

\(f(n)\) 为数字互异的坏序列数,\(g(n)\) 为坏序列数。由于数字顺序对性质无影响,我们可以取一个数字互异的坏序列,将其中第 \(i\) 个元素扩增 \(k_i\ge 1\) 倍得到一个一般的坏序列。可以将每个数字看做一个盒子,第 \(i\) 个盒子中放 \(k_i\) 个球。这的组合意义自然导出了如下公式:

\[g(n) = \sum_{i = 0}^n \begin{Bmatrix} n \\ i \end{Bmatrix} f(i)
\]

斯特林反演得到

\[f(n) = \sum_{i = 0}^n (-1)^{n - i} \begin{bmatrix} n \\ i \end{bmatrix} g(i)
\]

我们已经充分了解了如何 \(O(n\log n)\) 求得一行斯特林数,下面只需要求得每个 \(g(k)\) 即可。这问题即为 CF1603F\(x > 0\) 时的情况。我们已经知道了

\[\begin{aligned}

g(k) &= \sum_{r=0}^k\prod_{i=1}^r(2^m-2^i) \begin{bmatrix} k \\ r \end{bmatrix}_2
\\ & = \sum_{r=0}^k 2^{r (r + 1) / 2} [m - 1]_2^{\underline {r - 1}} \begin{bmatrix} k \\ r \end{bmatrix}_2
\\ & = \sum_{r=0}^k 2^{r (r + 1) / 2} \frac{[m - 1]_2!}{[m - 1 - r]_2!} \begin{bmatrix} k \\ r \end{bmatrix}_2
\\ & = [m - 1]_2! [k]_2!\sum_{r=0}^k \left( \frac{2^{r (r + 1) / 2}}{[m - 1 - r]_2![r]_2! }\right)\left( \frac{1}{[k - r]_2!} \right)

\end{aligned}\]

一次卷积即可。

总时间复杂度为 \(O(n\log n + m)\),需要预处理 \(\text{q-}\)阶乘和它的逆元。

Submission.