数位

发布时间 2023-08-31 09:11:32作者: wscqwq

母题

考虑经典的前缀和思维,求出 \(0\sim r\),求出 \(0\sim l-1\) 即可。

考虑先爆搜,分别记录当前处理到的位数,前导零,是否有限制,要求数的个数即可。

由于这些信息都很小,把它们当作动态规划的状态,然后记忆化即可。

1

拆位方式和要求数记录不同。

2

记录差值。

3

类似于 1,注意 \(0\)

母题2

状态:\(\mathrm{DP}[n][f_1][f_2][f_3][r_1][r_2][r_3]\),三个数是否在 \((2^{n}-1)\&N\),即 \(N\) 的最后 \(n\) 位,还有各自的余数。

转移时保证新的位异或值为 \(0\)(即偶数个位为 \(1\)),还有最高位的取值来改变/不变是否还在范围内。

重点在实现和思考。

总结

一般都有通用模板(记忆化搜索):记录当前处理到的位、前导0、当前答案、最高位是否已经小于(即后面是否能随便填)

没什么可说。(难题就算了)

还有的题可以像母题2一样正着思考,但是代码较长。