数位
母题
考虑经典的前缀和思维,求出 \(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一样正着思考,但是代码较长。