专栏文章

[题解] ABC390G Permutation Concatenation

AT_abc390_g题解参与者 7已保存评论 6

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
6 条
当前快照
1 份
快照标识符
@miqe4hkv
此快照首次捕获于
2025/12/04 03:18
3 个月前
此快照最后确认于
2025/12/04 03:18
3 个月前
查看原文
m=lgnm = \lfloor \lg n \rfloorai=10i+1a_i = 10^{i+1}bi=[10i,10i+1)[1,n]Zb_i = \lvert [10^i, 10^{i + 1}) \cap[1, n] \cap \mathbb Z \rvert
不难发现,对于 [10i,10i+1)[10^i, 10^{i + 1}) 中的数,它们的贡献系数是相同的,为:
0j<nj!(nj1)![xj]0km(1+akx)bk(1+aix)\sum_{0\le j < n} j!(n-j-1)! [x^j] \frac{\prod_{0 \le k \le m} (1+a_kx)^{b_k}}{(1+a_ix)}
那么现在的问题就是要计算出:
F(x)=0km(1+akx)bkF(x) = \prod_{0 \le k \le m} (1+a_k x)^{b_k}
的各项系数。
求导可得:
F=0kmakbk(1+akx)bk10jmjk(1+ajx)bjF' = \sum_{0 \le k \le m} a_kb_k(1+a_kx)^{b_k-1} \prod_{\substack{0 \le j \le m \\ j \neq k}} (1+a_jx)^{b_j}
记:
G(x)=0km(1+akx)G(x) = \prod_{0 \le k \le m} (1+a_kx)
那么有:
FG=0kmakbk0jmjk(1+ajx)1jm(1+ajx)bj=(0kmakbk0jmjk(1+ajx))F\begin{aligned} F' G &= \sum_{0 \le k \le m} a_k b_k \prod_{\substack{0 \le j \le m \\ j \neq k}} (1+a_jx)\prod_{1 \le j \le m} (1+a_jx)^{b_j} \\ &= \left(\sum_{0 \le k \le m} a_k b_k \prod_{\substack{0 \le j \le m \\ j \neq k}} (1+a_jx) \right) F \end{aligned}
记前面那一坨是 HH,那么就得到了:
FG=FHF'G = FH
两边同时提取 xnx^n 系数可得:
0in(i+1)fi+1gni=0infihni(n+1)fn+1g0=0infihni0i<n(i+1)fi+1gnifn+1=1(n+1)g0(0infihni0i<n(i+1)fi+1gni)\begin{aligned} \sum_{0 \le i \le n} (i + 1) f_{i +1} g_{n - i} &= \sum_{0 \le i \le n} f_i h_{n - i} \\ (n+1)f_{n+1}g_0 &= \sum_{0 \le i \le n} f_i h_{n - i} - \sum_{0 \le i < n}(i+1)f_{i+1}g_{n-i} \\ f_{n + 1} &= \frac{1}{(n+1)g_0} \left( \sum_{0 \le i \le n} f_i h_{n - i} - \sum_{0 \le i < n}(i+1)f_{i+1}g_{n-i} \right) \end{aligned}
由于 HHGG 都只有 O(m)O(m) 项,右边其实只有 O(m)O(m) 项,这样就能 O(nlogn)O(n \log n) 递推出 FF 的各项系数。
然后要算的就是:
P=F(1+aix)\begin{aligned} P &= \frac{F}{(1+a_ix)} \\ \end{aligned}
的各项系数,这个也可以用类似的方法得到递推式:
(1+aix)P=Fpn+aipn1=fnpn=fnaipn1\begin{aligned} (1+a_ix)P &= F \\ p_n+ a_i p_{n-1} &= f_n \\ p_n &= f_n - a_ip_{n-1} \end{aligned}
可以 O(n)O(n) 递推。
时间复杂度 O(nlogn)O(n \log n)

评论

6 条评论,欢迎与作者交流。

正在加载评论...