qoj6344. The Best Problem of 2021

发布时间 2023-05-04 23:00:11作者: Rainbow_qwq

如果给出的线性基不是最小的,那么无解。

考虑简单转化一下问题。先把线性基消元,求出 \(X\) 在线性基中的 \(\text{Rank}\),再判一下全选是否无解。令 \(X\to \text{Rank}(X)\),问题可以转化为:在 \(\{0,1,..,X\}\) 的子集中选若干个数,使得子集线性基满秩(即秩等于 \(\{0,1,..,X\}\) 全选的秩)。(这里把 \(0\) 算进去了,最后答案要除以 \(2\)

考虑子空间容斥(子线性基容斥?)。枚举所有的不同的子线性基(也就是枚举所有进行高斯消元后的线性基),算出 \(0\sim X\) 内有 \(t\) 个数在该线性基内,则该线性基的子集答案为 \(2^t\)

对于秩为 \(i\) 的线性基,求出 \(ans_i = \sum\) 所有秩为 \(i\) 的线性基的答案。最后进行一下 q-二项式反演,可以得到所有秩恰好\(i\) 的线性基答案。

一份能过样例 1 的暴力容斥代码(只求了满秩的答案)


接下来考虑怎么数 \(ans_i\)。(接下来讨论的全部都是消元后的线性基

考虑求出 \(X\) 在该子线性基中的 \(\text{Rank}\),那个数是 \(2^{\text{Rank}(X)}\)