1 条题解
-
0
思路
异或与普通加法的最低位奇偶性相同,而且异或值不会超过元素和。因此所有可能值都与 同奇偶且不超过 。
当 时,对任意满足上述条件的 ,序列 都能得到异或值 ,所以这些必要条件也是充分条件。 时则只有值 。
困难只在 。
做法
设 为两个非负整数和为 时所有可能异或值之和, 为不同异或值的数量。
若 为奇数,一数为奇、一数为偶。去掉最低位后得到和为 的同类问题,因此
$$g(n)=g(\lfloor n/2\rfloor),\qquad f(n)=2f(\lfloor n/2\rfloor)+g(\lfloor n/2\rfloor).$$若 为正偶数,两数要么都为偶数,要么都为奇数。右移一位后,两类问题的和分别为 与 ,并且得到的异或值最低位均为零,所以
初值为 。记忆化计算只会访问每一二进制层常数个状态。
对于 ,若 ,答案为 ;若 ,答案为 。所有运算均对模数取模。
正确性证明
的结论显然。 时,奇偶和上界给出所有可能异或值的必要范围,而三项构造对范围内每个值都给出合法序列,因此闭式求和完整且无重复。
时,按两数最低位分类覆盖了全部可能且各类互不相交。右移后的和与异或值分别按递推式变化,数量和数值和的递推因此精确。以 为初值递归即可得到全部可能值的数量与总和。
复杂度
每组数据的时间复杂度为 ,记忆化状态的空间复杂度为 ; 时为常数时间。
- 1
信息
- ID
- 1378
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者