[数位dp] [根号分治] P8350 [SDOI_SXOI2022] 进制转换
posted on 2025-03-28 10:04:02 | under | source
题意:给 \(n,x,y,z\),求 \(\sum\limits_{i\in [1,n]} x^iy^{a(i)}z^{b(i)}\),\(a,b\) 分别为 \(2,3\) 进制下数位和。\(n\le 10^{13}\)。
二进制和三进制之间没有什么好性质,只能将一个在线考虑另一个记入状态。这里动态考虑三进制。
然后有一个根号分治的想法,暴力枚举三进制后 \(B_1\) 位,那么 \([0,B_1)\) 位可以影响的二进制位有限,记为 \([0,B_2)\)。然后 dp 解决 \([0,B_1)\) 位,对于 \(x,z\) 的贡献容易统计,\(y\) 的贡献拆为 \([0,B_2)\) 和后 \(B_2\) 位,后者只需记录是否进位即可。
具体来说,记 \(f_{i,S,0/1}\) 表示已经填了后 \(i\) 位,\([0,B_2)\) 的二进制状态为 \(S\),且是否向 \(B_2\) 进位的贡献和。\(O(B_12^{B_2}+\frac {n}{3^{B_1}})\)。取 \(B_1=13,B_2=21\)。
因为我红了,所以代码复制于题解。

浙公网安备 33010602011771号