CF691E Xor-sequences

CF691E Xor-sequences

[10月9日的茶](Problem - 691E - Codeforces)

计数问题,只有相邻元素有约束,k很大,考虑矩阵快速幂dp

因为只有相邻元素有约束,所以转移只用看某序列最后一个元素,设 \(f[i][j]\) 为长度为 \(i\) 的序列,最后一个元素是 \(a_j\) 的个数

对于序列 \(b\) 相邻元素的 \(b_i\)\(b_{i+1}\) 的的限制只有 \(3 \mid b_i \bigoplus b_{i+1}\)

可以考虑构造矩阵 \(M\) 描述 \(a_i\)\(a_j\) 的转移关系

\[\begin{cases} M_{ij} = 1 && 3 \mid a_i \bigoplus a_j \\ M_{ij} = 0 && 3 \nmid a_i \bigoplus a_j \end{cases} \]

快速幂计算 \(f[i]M^{k-1}\) 即可

代码

注意矩阵运算不满足交换律 (\(res \times qpow(M, n)\) 处)

\(\_\_ popcount((ull))\) 处要开 \(ull\) 而不能是 \(unsigned\)

posted @ 2025-10-11 23:55  风掣凧浮  阅读(11)  评论(0)    收藏  举报