做题记录 26.2.15

\(\textcolor{black}\odot\) AT_abc288_h [ABC288Ex] A Nameless Counting Problem

\(g_i\) 表示长度为 \(i\),值域为 \([0,m]\),异或和为 \(x\) 且数字互不相同的序列数量,则答案为

\[\sum_{i=0}^{\lfloor\frac n2\rfloor}\frac{g_{n-2i}}{(n-2i)!}\binom{m+i}i \]

得到 \(g\) 后容易 \(O(n^2)\) 求出答案,因此考虑如何求出 \(g\)

\(f_i\) 表示长度为 \(i\),值域为 \([0,m]\),异或和为 \(x\) 的序列数量,容易数位 \(dp\) 做到 \(O(n^3\log V)\)

\(od_{i,j},ev_{i,j}\) 表示 \(1\sim i\) 划分为 \(j\) 部分,每部分大小为奇数/偶数的方案数,容易做到 \(O(n^3)\)

\[g_l=h_l-\sum_{i=0}^l \sum_{j=0}^{l-1} \sum_{k=0}^l \binom li od_{i,j} g_j ev_{l-i,k}(m+1-j)^{\underline k} \]

容易优化到 \(O(n^3)\)

总时间复杂度 \(O(n^3\log V)\)

代码

参考

\(\textcolor{black}\odot\) AT_arc184_e [ARC184E] Accumulating Many Times

同时令 \(A_i\) 每个位置变为其前缀和,改为同时令 \(A_j\) 中每个位置异或上前一个位置,显然不影响答案

显然操作可逆,且每个状态有且仅有一个后继,对于 \(2^m\) 个状态建图,可以得到若干环

\(l=2^{1+\lceil\log_2(m)\rceil}\),则环长一定 \(\le l\)

考虑每个环求出一个关键点,并对每个 \(A_i\) 求出它到所属环关键点的距离 \(ds\)

令关键点为环中字典序最小的点,因此转化为对每个 \(A_i\) 求出能得到的字典序最小的状态以及到达此状态的步数

对于一个 \(A_i\),令 \(p\) 为第一个 \(A_{i,p}=1\) 的位置,显然 \(A_{i,1\sim p}\) 经过操作后不变

\(2^l\) 次操作等价于同步令每个 \(A_{i,x}\) 异或上 \(A_{i,x-2^l}\),对操作二进制拆分可以转化为若干次此操作

从前往后贪心,则依次考虑 \(A_{i,p+2^k}\mid k\ge 0\)(其余位置一旦操作则会影响之前的位置,反而字典序更大),若为 \(1\) 则进行 \(2^k\) 次操作

暴力实现此过程,容易做到 \(O(nm\log m)\)

令每个 \(A_i\) 变为其所在环的关键点,依次考虑每个等价类,容易树状数组优化统计答案的过程,做到 \(O(nm\log n)\)

总时间复杂度 \(O(nm\log nm)\)

代码

参考

\(\textcolor{black}\odot\) CF1770F Koxia and Sequence

\(a_{1\sim n}\),考虑其全排列,\(1\sim n\) 每个位置的贡献都相同,当 \(n\) 为偶数时贡献相互抵消,当 \(n\) 为奇数时只剩下 \(a_1\) 的贡献

因此 \(n\) 为偶数时答案为 \(0\),否则只需要求所有合法的 \(\{a\}\)\(a_1\) 的异或和即可

答案以异或的方式统计,因此 \(a_1\) 每一位贡献独立,考虑第 \(i\) 位的贡献,转化为求 \(a_1\)\(i\) 位为 \(1\) 的方案数,显然 \(i\in y\)

\(f(y)\) 表示 \(\{a\}\) 按位或和为 \(y\) 的子集,\(a_1\)\(i\) 位为 \(1\)\(a\) 总和为 \(x\) 的方案数,则容斥得 \(2^i\) 计入答案的次数为 \(\sum_{y'\subseteq y} (-1)^{|y|-|y'|}f(y')\equiv\bigoplus_{y'\subseteq y} f(y')\pmod 2\),即转化为求 \(f(y')\) 的异或和(注意 \(i\in y'\)

\[\begin{aligned} f(y')=&\bigoplus_{\{a\}\mid \sum a_i=x} [i\in a_1]\prod_i [a_i\subseteq y']\\ =&\bigoplus_{\{a\}\mid \sum a_i=x-2^i}[a_1\subseteq y'-2^i] \prod_{i>1} [a_i\subseteq y']\\ =&\bigoplus_{\{a\}\mid \sum a_i=x-2^i}\binom{y'-2^i}{a_1}\prod_{i>1} \binom{y'}{a_i}\\ =&\sum_{\{a\}\mid \sum a_i=x-2^i}\binom{y'-2^i}{a_1}\prod_{i>1} \binom{y'}{a_i}\quad\bmod 2\\ =&\binom{ny'-2^i}{\sum a_i}\\ \end{aligned} \]

可以 \(O(1)\) 计算

总时间复杂度 \(O(y\log y)\)

代码

参考

posted @ 2026-02-16 10:19  Hstry  阅读(2)  评论(0)    收藏  举报