专栏文章

题解:AT_abc390_g [ABC390G] Permutation Concatenation

AT_abc390_g题解参与者 2已保存评论 1

文章操作

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

当前评论
1 条
当前快照
1 份
快照标识符
@miqe3d5w
此快照首次捕获于
2025/12/04 03:18
3 个月前
此快照最后确认于
2025/12/04 03:18
3 个月前
查看原文
观前提示:3×1053 \times 10^566 个数,而不是 55 个(不要问为什么要提示)。

考虑先求出 lenilen_i 表示长度为 ii 的数有多少个,以及 sis_i 表示长度为 ii 的数之和。
我们对数 xx 统计其造成的所有贡献,可以写出(注意 xx 对应的 lenlen 要减 11):
{vi}(xi=16(10i)vi)(i=16(lenivi))(vi)!(n1vi)!\sum_{\{v_i\}}(x\prod_{i=1}^{6}(10^{i})^{v_i})(\prod_{i=1}^{6}\binom{len_i}{v_i})(\sum v_i)!(n-1-\sum v_i)!
稍微解释下,枚举每种数有多少个在 xx 之前,然后贡献就是 (xi=16(10i)vi)(x\prod_{i=1}^{6}(10^{i})^{v_i}),方案数就是 (vi)!(n1vi)!(\sum v_i)!(n-1-\sum v_i)!
整理一下:
{vi}x(i=16(10i)vi(lenivi))(vi)!(n1vi)!\sum_{\{v_i\}}x(\prod_{i=1}^{6}(10^{i})^{v_i}\binom{len_i}{v_i})(\sum v_i)!(n-1-\sum v_i)!
设哑元 L(ui)=i!(n1i)!L(u^i)=i!(n-1-i)!,根据线性性,原式:
x{vi}(i=16(lenivi)(10iu)vi)=xi=16(1+10iu)lenix\sum_{\{v_i\}}(\prod_{i=1}^{6}\binom{len_i}{v_i}(10^iu)^{v_i})\\=x\prod_{i=1}^{6}(1+10^iu)^{len_i}
直接对同一类数求和,答案就是:
i=16sij=16(1+10ju)lenj[j=i]ans=i=16k=0n1sik!(n1k)![uk]j=16(1+10ju)lenj[j=i]\sum_{i=1}^{6}s_i\prod_{j=1}^{6}(1+10^ju)^{len_j-[j=i]}\\ans=\sum_{i=1}^{6}\sum_{k=0}^{n-1}s_ik!(n-1-k)![u^k]\prod_{j=1}^{6}(1+10^ju)^{len_j-[j=i]}
具体求解可以先快速幂 O(nlog2n)O(n\log^{2}{n}) 求出,再除掉一个 (1+10iu)(1+10^{i}u),容易做到 O(n)O(n)
时间复杂度就是 O(nlog2n+V(n+k)),V=6O(n\log^2{n}+V(n+k)),V=6

评论

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

正在加载评论...