T682511 Happy・Lovely・Everyday!

发现 \(p(x)\)\(01\) 序列时与异或等价,所以不用考虑。并且我们发现对于相邻异或的情况,对于一段区间如果合并成 \(1\) 个那么最终一定是确定的。所以现在问题就等价成了我们考虑合并若干个区间所能够拼成的序列数量。那么考虑对于一个序列什么情况是合法的。对于区间异或问题可以先上个前缀和。现在就变成了我们选择判断长度个分割点,然后看是否存在分割点方案使得相邻异或为 \(b_i\)。之后发现它们之间又是一个相邻的,那么做一个前缀异或和之后发现就等价成了是 \(a^{'}\) 的一个子序列。那么我们只需要求 \(a^{'}\) 的本质不同子序列方案数。考虑设 \(f_i\) 表示前 \(i\) 个数本质不同子序列的数量,那么:

  1. \(a^{'}_i\) 没有出现过,那么 \(f_i=f_{i-1}+f_{i-1}+1\)
  2. 否则 \(f_i=f_{i-1}+f_{i-1}-f_{l_{a^{'}_i}}\),减去上一次出现过的一个部分,然后因为已经算过一次 \(a^{'}_i\) 所以不能加 \(1\)
posted @ 2025-10-21 16:46  tanghg  阅读(2)  评论(0)    收藏  举报