[数位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\)

因为我红了,所以代码复制于题解。

posted @ 2026-01-13 11:16  Zwi  阅读(0)  评论(0)    收藏  举报