没写题解不意味着没做,有的忘了写或者太草率了就算了。
部分前言删了。
ZJOI 树
题解
学不会的容斥。
考虑分别钦定 \(S,T\) 为两边的叶子集合,其余节点任意,则此时对应的答案为
\[f(S)g(T)
\]
其中
\[f(S)=\prod_{i=2}^n\sum_{j=1}^{i-1}[j\notin S]
\]
\[g(T)=\prod_{i=1}^{n-1}\sum_{j=i+1}^n[j\notin T]
\\=\prod_{i=1}^{n-1}(n-|T|-\sum_{j=1}^i[j\notin T])
\]
容斥一下,答案就是
\[\sum_{S\cup T=[1,n]\cap\mathbb N}(-2)^{|S\cap T|}f(S)g(T)
\]
这个 \(-2\) 比较微妙……(反向枚举集合与容斥系数相乘)
逐项枚举 \(i\in[1,n]\),记录下当前的 \(\sum_{j=1}^i[j\notin S]\) 与 \(n-|T|-\sum_{j=1}^i[j\notin T]\) 即可。
总复杂度 \(O(n^3)\)。
AHOI 排列
题解
没精力做难题,过来刷刷水题。
为了方便,我们记 \(K(n)=\max_{1\le x\le n}\omega(x)=\Theta(\frac{\log n}{\log\log n})\)。
设置换
\[g=\binom{1,2,3,\ldots,n}{a_1,a_2,a_3,\ldots,a_n}
\]
假设做循环分解,得
\[g=c_1c_2\cdots c_m
\]
且 \(x\) 号元素在循环 \(c_{j(x)}\) 中。
\(c_k\) 的元素个数记为 \(|c_k|\)。
则
\[\def\lcm{\operatorname{lcm}}
f(a,b)=\begin{cases}
0&(j(a)=j(b))\\
\lcm\{|c_{j(a)}|+|c_{j(b)}|,\lcm_{k\neq j(a),k\neq j(b)}|c_k|\}&(j(a)\neq j(b))
\end{cases}
\]
于是
\[\def\lcm{\operatorname{lcm}}
ans=\sum_{1\le a\le n}\sum_{1\le b\le n}f(a,b)
\\=\sum_{1\le a<b\le m}2|c_a||c_b|\lcm\{|c_a|+|c_b|,\lcm_{k\neq a,k\neq b}|c_k|\}
\]
然后接下来通过根号分治容易得到一个根号做法,感觉跑不过去,但是还是先列出来。
假设
\[v_k=\sum_{1\le a\le m}[|c_a|=k]
\]
\[S=\{a|1\le a\le n,v_a>0\}
\]
\[T=\{a|1\le a\le n,v_a>1\}
\]
则
\[\def\lcm{\operatorname{lcm}}
ans=\sum_{a,b\in S,a<b}2abv_av_b\lcm\{a+b,t(a,b)\}
\\+\sum_{a\in T}a^2v_a(v_a-1)\lcm\{2a,w(a)\}
\]
其中
\[\def\lcm{\operatorname{lcm}}
t(a,b)=\begin{cases}
\lcm_{x\in S-\{a\}-\{b\}}x&(v_a=v_b=1)\\
\lcm_{x\in S-\{b\}}x&(v_a>1,v_b=1)\\
\lcm_{x\in S-\{a\}}x&(v_a=1,v_b>1)\\
\lcm_{x\in S}x&(v_a>1,v_b>1)
\end{cases}
\]
\[\def\lcm{\operatorname{lcm}}
w(a)=\begin{cases}
\lcm_{x\in S-\{a\}}x&(v_a=2)\\
\lcm_{x\in S}x&(v_a>2)
\end{cases}
\]
然后 \(|S|=O(\sqrt n)\),直接暴力做复杂度即为根号级别的。(可能会质因数分解多一个 \(K(n)\),变成 \(O(n\sqrt{nK(n)})\))
考虑如何继续优化。
考虑到 \(t(a,b)\) 与 \(w(a)\) 定义时要分类讨论,为了方便,我们不妨直接定义一个可重集 \(T\)。
\[v_k=\sum_{1\le a\le m}[|c_a|=k]
\]
\[S=\{a|1\le a\le n,v_a>0\}
\]
\[T=\{|c_k||1\le k\le m\}
\]
则
\[\def\lcm{\operatorname{lcm}}
ans=\sum_{a,b\in S,a<b}2abv_av_b\lcm\{a+b,\lcm_{x\in T-\{a,b\}}x\}
\\+\sum_{a\in S}v_a(v_a-1)a^2\lcm\{2a,\lcm_{x\in T-\{a,a\}}x\}
\]
接下来就是考虑如何不太暴力地计算答案了。
仍然考虑到
\[|S|=O(\sqrt n)
\]
考虑暴力枚举合法的 \(a,b\) 对,最多只有 \(O(n)\) 对。
提前预处理出 \(1\sim n\) 中所有数的每个质因子及其次幂,设此幂次为 \(c(x,p)\)。这个可以在 \(O(n\log\log n)\) 内得到。
对 \(1\sim n\) 中每个质数 \(p\),算出其在 \(\max_{x\in T}c(x,p),2th\max_{x\in T}c(x,p),3th\max_{x\in T}c(x,p)\)。
这个可以 \(O(\sqrt nK(n))\) 预处理。
然后这个 \(\operatorname{lcm}\) 部分就容易通过简单讨论在 \(O(K(n))\) 之内完成。
于是总复杂度为 \(O(\frac{n\log n}{\log\log n})\)。
AHOI 山河重整
题解
EI 题.jpg。
因为我啥也不会,所以以下全是贺的!!!1
记号约定:一个集合 \(A\) 的元素和记为 \(\sigma(A)\)。
题目中限制的充要条件:
\[\forall1\le k\le n,\sigma(S\cap[1,k])\ge k
\]
\(\rm Proof.\)
必要性显然。考虑怎么证充分性。
\(n=1,2\) 时显然充分,考虑 \(n>2\)。
取 \(k=1,2\),得 \(1,2\in S\)。
对 \(3\le k\le n\),尝试说明可行。
考虑数学归纳。
设 \(\sigma(S\cap[1,x])\ge k\),且 \(x\) 为最小合法解。
则 \(\sigma(S\cap[1,x))<k,x\in S,1\le x\le k\)。
从而 \(\sigma(S\cap[1,x])<k+x\)。
从而 \(a=\sigma(S\cap[1,x])-k\le x-1<k\)。
由数学归纳法,容易发现 \(a\) 时可以被 \(S\cap[1,k]\) 的一个(可能为空的)真子集 \(T\) 表出,从而 \(k\) 可以由 \((S\cap[1,k])-T\) 表出。
由数学归纳法原理,充分性得证。
\(\rm QED\)。
然后就容易得到 \(O(n^2)\) 的 dp。
\[f_{i,j}=(f_{i-1,j}+f_{i-1,j-i})[j\ge i]
\]
然后下标和 \(n\) 取 \(\min\) 即可 \(O(n^2)\),实现得精细可以获得 \(60\rm pts\)。
接下来考虑怎么继续做。
假设 \(a_{k+1}\) 为满足 \([1,k]\cap\mathbb N\) 的子集 \(T\) 数量,使得 \(\sigma(T)=k\),且 \(\forall1\le j\le k,\sigma(T\cap[1,j])\ge j\)。
则答案即为 \(2^n-\sum_{i=1}^na_i2^{n-i}\),故设 \(A(z)=\sum_ka_kz^k\)。
容易有
\[\sum_ka_{k+1}z^k\prod_{j\ge k+2}(1+z^j)=\prod_{j\ge1}(1+z^j)
\]
其中 \(z\) 用来标记 \(\sigma(S)\),等式的组合意义即是 \(\sum_{S\subseteq\mathbb N^+}z^{\sigma(S)}\)。
写得好看点,就是
\[\sum_ka_kz^k\prod_{j>k}(1+z^j)=z\prod_{j\ge1}(1+z^j)
\]
右侧直接枚举每个元素的是否选择,而左侧枚举的是第一个不可以被表示的元素。
尝试把右手式除到左边这里,但是发现由于模意义下元素不一定可逆,所以基本就是没得搞:由于不能 NTT,所以直接做也别想了。
\[\prod_{j\ge k}(1+z^j)
\]
这个东西,考虑一个好一点的柿子转化。设
\[P(z,u)=\prod_j(1+uz^j)
\]
则
\[P(z,z^k)=\prod_{j\ge k}(1+z^j)
\]
故只用考虑 \([u^n]P(z,u)\) 是怎么一个关于 \(z\) 的多项式,再复合即可。
ODE 似乎不太行(模意义下不能求逆),所以考虑直接对系数递推。
\[P(z,u)=(1+u)P(z,zu)
\]
\[[u^n]P(z,u)=z^{n-1}[u^{n-1}]P(z,u)+z^n[u^n]P(z,u)
\]
\[[u^n]P(z,u)=\frac{z^{n-1}}{1-z^n}[u^{n-1}]P(z,u)=\prod_{j=1}^n\frac{z^{j-1}}{1-z^j}
\]
\[\prod_{j\ge k}(1+z^j)=P(z,z^k)=\sum_nz^{nk}[u^n]P(z,u)=\sum_n\frac{z^{nk+n(n-1)/2}}{\prod_{1\le j\le n}1-z^j}
\]
于是
\[\sum_ka_kz^k\prod_{j>k}(1+z^j)
\\=\sum_ka_kz^k\sum_n\frac{z^{nk+n(n+1)/2}}{\prod_{1\le j\le n}1-z^j}
\\=\sum_n\frac{z^{n(n+1)/2}}{\prod_{1\le j\le n}1-z^j}\sum_ka_kz^{k(n+1)}
\\=\sum_n\frac{z^{n(n+1)/2}A(z^{n+1})}{\prod_{1\le j\le n}1-z^j}
\\=\sum_{k>0}\frac{z^{k(k-1)/2}}{\prod_{1\le j<k}1-z^j}A(z^k)
\\=A(z)+\sum_{k>1}\frac{z^{k(k-1)/2}}{\prod_{1\le j<k}1-z^j}A(z^k)
\]
\[z\prod_{j\ge1}(1+z^j)=\sum_k\frac{z^{k(k+1)/2+1}}{\prod_{1\le j\le k}1-z^j}
\]
这个东西……是不是可以倍增法呀。
假设我们现在已知 \(a_0\sim a_{n-1}\),考虑计算 \(a_n\sim a_{2n-1}\)。
\[A(z)\equiv\left(\sum_k\frac{z^{k(k+1)/2+1}}{\prod_{1\le j\le k}1-z^j}\right)-\left(\sum_{k>1}\frac{z^{k(k-1)/2}}{\prod_{1\le j<k}1-z^j}A(z^k)\right)\pmod{z^{2n}}
\]
容易发现等式右侧只会用到 \(a_0\sim a_{n-1}\),于是便可以将 \(a_n\sim a_{2n-1}\) 一并解出。
显然 \(k\le2\sqrt n\),然后直接做就好了。
单轮复杂度 \(O(n\sqrt n)\),由主定理,总复杂度为 \(O(n\sqrt n)\)。
SDOI/SXOI 整数序列
题解
不懂啊,为啥都喜欢出根号题。
感觉不可 polylog,考虑根号做法。
考虑对每个颜色出现次数进行根号分治。
设阈值 \(T\),称出现多于 \(T\) 次的颜色为大块,少于 \(T\) 次的颜色为小块。
显然大块的出现次数不会超过 \(\frac nT\) 次。
考虑计算答案。
先考虑计算大块和大块的答案。
假设长度分别是 \(a\) 和 \(b\),则只用在 \(O(a+b)\) 时间内解决,复杂度即为 \(O(\frac{n^2}T)\)。
首先可以直接做归并,然后做前缀和,则只用找到前缀 \(c\) 和相同、\(b\) 差值最大的一组即可。
这个显然可以在 \(O(a+b)\) 之内解决。
于是就可以在不超过 \(O(\frac{n^2}T)\) 内预处理所有大块间答案。
对于小块之间的答案,我们可以对每个询问分别做一次,复杂度即为 \(O(mT)\)。
接下来考虑大块和小块间的答案。
考虑咋做。
其实对当前询问有效的大块的点的区间个数似乎很少,直接把这些部分取出来做一次暴力即可。
问题是怎么找。
先考虑向左找,从右往左依次向左扫描,保持权值非负(\(1\) 与 \(-1\) 求和),向右同理;同时把取到负值的点也加上,方便处理。
最后把对应点归并去重即可。
取 \(T=\sqrt n\),总复杂度 \(O(n\sqrt n)\)。
SDOI/SXOI 进制转换
题解
不懂 OI 了,为啥都会根号题。
设阈值 \(B\),使得 \(t=\lfloor\frac n{3^B}\rfloor\),\(m=3^Bt\)。
\[ans=\sum_{i=1}^nx^iy^{a(i)}z^{b(i)}
\\=-1+\sum_{i=0}^{m-1}x^iy^{a(i)}z^{b(i)}+\sum_{i=m}^nx^iy^{a(i)}z^{b(i)}
\]
后一个部分可以 \(O(3^B+\log n)\) 暴力计算,考虑前一部分。
\[\sum_{i=0}^{m-1}x^iy^{a(i)}z^{b(i)}
\\=\sum_{i=0}^{t-1}\sum_{j=0}^{3^B-1}x^{i3^B+j}y^{a(i3^B+j)}z^{b(i3^B+j)}
\\=\sum_{i=0}^{t-1}x^{i3^B}z^{b(i)}\sum_{j=0}^{3^B-1}x^jz^{b(j)}y^{a(i3^B+j)}
\]
乍一看不好做。
其实考虑到,设 \(2^{S-1}\le 3^B<2^S\),则
\[\def\lf{\left\lfloor}\def\rf{\right\rfloor}
\lf\frac{i3^B+j}{2^S}\rf\in\{\lf\frac{i3^B}{2^S}\rf,\lf\frac{i3^B}{2^S}\rf+1\}
\]
于是
\[\def\lf{\left\lfloor}\def\rf{\right\rfloor}
\sum_{i=0}^{m-1}x^iy^{a(i)}z^{b(i)}
\\=\sum_{i=0}^{t-1}x^{i3^B}z^{b(i)}\sum_{j=0}^{3^B-1}x^jz^{b(j)}y^{a(\lfloor\frac{i3^B+j}{2^S}\rfloor)+a((i3^B+j)\bmod2^S)}
\\=\sum_{i=0}^{t-1}x^{i3^B}z^{b(i)}\sum_{j=0}^{3^B-1}x^jz^{b(j)}y^{a(\lfloor\frac{i3^B}{2^S}\rfloor+[ \lfloor\frac{i3^B+j}{2^S}\rfloor\not\equiv\lfloor\frac{i3^B}{2^S}\rfloor\pmod2])+a((i3^B+j)\bmod2^S)}
\]
设 \(f_k=x^{k3^B}z^{b(k)}\),\(g_k=x^kz^{b(k)}\),则即
\[\def\lf{\left\lfloor}\def\rf{\right\rfloor}
\sum_{i=0}^{m-1}x^iy^{a(i)}z^{b(i)}
\\=\sum_{i=0}^{t-1}\sum_{j=0}^{3^B-1}f_ig_jy^{a(\lfloor\frac{i3^B}{2^S}\rfloor+[ \lfloor\frac{i3^B+j}{2^S}\rfloor\not\equiv\lfloor\frac{i3^B}{2^S}\rfloor\pmod2])+a((i3^B+j)\bmod2^S)}
\\=\sum_{k=0}^{2^S-1}y^{a(k)}\sum_{i=0}^{t-1}\sum_{j=0}^{3^B-1}f_ig_jy^{a(\lfloor\frac{i3^B}{2^S}\rfloor+[\lfloor\frac{i3^B+j}{2^S}\rfloor\not\equiv\lfloor\frac{i3^B}{2^S}\rfloor\pmod2])}[i3^B+j\equiv k\pmod{2^S}]
\]
设
\[\def\lf{\left\lfloor}\def\rf{\right\rfloor}
h_{o,p,k}=\sum_{i=0}^{t-1}[i3^B\equiv k\pmod{2^{S+1}}][\lf\frac{i3^B}{2^S}\rf\bmod2=o]f_iy^{a(\lfloor\frac{i3^B}{2^S}\rfloor+p)}
\]
其中 \(o,p\in\{0,1\}\)。
则
\[\def\lf{\left\lfloor}\def\rf{\right\rfloor}
\sum_{i=0}^{m-1}x^iy^{a(i)}z^{b(i)}
\\=\sum_{k=0}^{2^S-1}y^{a(k)}\sum_{i=0}^{2^{S+1}-1}\sum_{j=0}^{3^B-1}(h_{0,0,i}+h_{1,1,i})g_j[i+j\equiv k\pmod{2^{S+1}}]
\\+\sum_{k=0}^{2^S-1}y^{a(k)}\sum_{i=0}^{2^{S+1}-1}\sum_{j=0}^{3^B-1}(h_{0,1,i}+h_{1,0,i})g_j[i+j\equiv k+2^S\pmod{2^{S+1}}]
\]
直接做两次卷积即可。
平衡一下复杂度,即为 \(O(\sqrt{n\log n})\)。
SDOI/SXOI 小 N 的独立集
题解
考虑 dp 套 dp。
假设 \(p\) 子树中,答案为 \(x\),不选择 \(p\) 时答案为 \(y\),这样的方案数为 \(f_{p,x,y}\)。
\[y_p=\sum_sx_s
\]
\[x_p=\max\{v_p+\sum_s y_s,\sum_s x_s\}
\]
考虑 \(x_p\) 与 \(y_p\) 的差值,则
\[d_p=x_p-y_p=\max\{v_p+\sum_s(y_s-x_s),0\}\le v_p\le k
\]
因此只用将 \(y_p\) 和 \(d_p\) 记入状态,则
\[y_p=\sum_sy_s+d_s
\]
\[d_p=\max\{v_p-\sum_sd_s,0\}
\]
记为 \(f_{p,d,y}\),直接树上背包转移处理即可。
复杂度应该是 \(O(n^2k^4)\) 左右?
SDOI/SXOI 多边形
题解
膜拜国际特级大师 EntropyIncreaser,出毒瘤计数题大杀四方!
考虑如果 \(a=1\),那么结果就是卡特兰数 \(C_{n-2}\),即 \(n\) 个边的普通多边形三角剖分数目。
考虑枚举每条边内最终有多少点被使用,假设是 \(b-1\) 个点,显然 \(1\le b\le a\),且有 \(\binom{a-1}{b-1}\) 种选法。
问题是这样可能会出现某条边上两个点相连的情况,要容斥掉。
考虑怎么容斥。
考虑到每条边上有 \(b\) 条线段可以参与决策,假设把相应的连边取出,则为一些二叉树的结构。
如
|-----| |-------|
|---|-| |---|---|
|-|-|-|-|-|-|-|-|
把这里的每条边拉出即可得到在一条线段上的一个决策。
考虑对此导出容斥系数。
手玩并归纳,容易分析出结果为,只要出现长度大于 \(2\) 的线段,容斥系数即为 \(0\);否则,容斥系数为 \((-1)^{\text{长度为 }2\text{ 的线段个数}}\)。
因此,我们假设枚举其中若干线段,则
\[g_b(z)=[u^b]\sum_kz^k(u-u^2)^k=\sum_k(-1)^{b-k}\binom k{b-k}z^k
\]
而答案即为
\[\sum_kC_{k-2}[z^k]\prod_j\sum_b\binom{a_j-1}{b-1}g_b(z)
\]
于是
\[h_a(z)=\sum_b\binom{a-1}{b-1}g_b(z)=\sum_kz^k\sum_b(-1)^{b-k}\binom k{b-k}\binom{a-1}{b-1}
\]
考虑怎么求这种东西。
经典的困难题,但仍可一试。
考虑定义
\[g(z,u)=\sum_kz^k(u-u^2)^k=\frac1{1-zu+zu^2}=\frac A{1-\alpha u}+\frac B{1-\beta u}
\]
(具体是啥就不写了,太丑)
从而
\[g_b(z)=[u^b]g(z,u)
\]
\[h_a(z)=A\alpha(1+\alpha)^{a-1}+B\beta(1+\beta)^{a-1}
\\=\frac1{2^a}(z((z+2+\sqrt{z^2-4z})^{a-1}+(z+2-\sqrt{z^2-4z})^{a-1})
\\+\frac{z^2-2z}{\sqrt{z^2-4z}}((z+2+\sqrt{z^2-4z})^{a-1}-(z+2-\sqrt{z^2-4z})^{a-1}))
\]
总复杂度 \(O(n\log^2n)\)。
SNOI 军队
题解
开始以为 \(1\) 操作 \(l=1,r=n\),按第四分块的做法写了个根号分治……
现在可就不是了,考虑采取最初分块的技巧,进行序列分块。
对每一块,用带权并查集维护每个元素,同时记录每个节点的 \(siz\),直接操作即可。
简单说来,设块长为 \(T\),我们离线下来逐块处理,按照如下操作维护:
- 对整块,直接合并 \(x,y\) 的根,带 \(0\) 权,修改 \(siz\);对散块,暴力修改然后重构。
- 对整块,直接计算对整块答案的贡献,并且重新拉一个根节点;对散块,直接暴力修改然后重构。
- 对整块,直接回答整块答案;对散块,直接暴力重构,然后顺带逐个询问。
由于每次涉及到散块时直接重构了整个结构,并查集没有进行查询操作,单次操作是均摊 \(O(1)\) 的;重构复杂度是 \(O(\text{至上次重构的操作次数}+T)\) 的,也就是单次操作总复杂度均摊 \(O(\frac nT+T)\)。
因此,取 \(T=\sqrt n\),总复杂度 \(O(n+q\sqrt n)\),空间复杂度 \(O(n+q)\),十分优秀。
(认为 \(n,c\) 同阶)
SNOI 倍增
题解
思路清奇的题目。被吓到了。
首先容易发现 \(n=2,B=3k-1\) 的很好构造:
\[\begin{matrix}\hline\dfrac{B-2}3&\dfrac{2B-1}3\end{matrix}
\]
然后发现 \(n=3\) 时,这个可以变成
\[\begin{matrix}\hline\dfrac{B-2}3&B-1&\dfrac{2B-1}3\end{matrix}
\]
然后发现 \(n\ge2\) 时,这个可以变成
\[\begin{matrix}\hline\dfrac{B-2}3&B-1&B-1&\cdots&B-1&\dfrac{2B-1}3\end{matrix}
\]
似乎是在一组合法解中插了很多 \(B-1\)?
事实上,只要构造出一组 \(n\) 最小的合法解,我们总可以在其中某个进位处(必定有进位吧)狂插 \(B-1\),从而实现解决所有情况。
然后问题就是找到这组合法解……
我不会啊,这玩意怎么构造。
然后你点开官方题解一看:
通过打表观察不难猜测,最小解 \(p\) 可能非常小。
基于这样的猜测,可以从小到大检查每个最小解 \(p\),考虑答案排列中的每个环,对于单个环的情况,不难提出一个 \(O(2^pB)\) 的做法,即枚举起始元素和按环上顺序枚举每个元素时,该元素从排列中原始位置的前一位处获得的进位情况。
真就爆搜是吧。
但是看不懂标答是怎么搜的,考虑自己想贺题解。
不妨考虑枚举最小解 \(p\),然后枚举变化的排列,枚举进位串,每个环做高斯消元,判断合法性。
然后就对跑太慢的几个打打表,show show way,就完了。嗯。
SNOI 数位
题解
不懂了,什么高级的 dp 题目。
不妨称 \(B=10\)。
naive 二项式反演并数位 dp 时 \(k\) 的次数太高,过不去。
考虑一个数 \(m\) 被统计的次数。
\[[z^m]\left(\sum_{i=L}^Rz^i\right)^k
\\=[z^m]\left(\frac{z^L-z^{R+1}}{1-z}\right)^k
\\=[z^{m-kL}]\left(\frac{1-z^{R-L+1}}{1-z}\right)^k
\\=\sum_t(-1)^{t}\binom kt[z^{m-kL-t(R-L+1)}]\left(\frac1{1-z}\right)^k
\\=\sum_t[m\ge kL+t(R-L+1)](-1)^{t}\binom kt\binom{m-kL-t(R-L+1)+k-1}{k-1}
\\=\sum_t[m\ge kL+t(R-L+1)]\frac{(-1)^{t}}{(k-1)!}\binom kt\prod_{i=1}^{k-1}(m-kL-t(R-L+1)+i)
\]
则答案即
\[\sum_{m\le kR}[m\text{ 除首若干位 0 外各位不增}]v_m
\\=\sum_{m<k(R+1)}[m\text{ 除首若干位 0 外各位不增}]v_m
\]
把 \(v_m\) 视作若干函数的叠加,分开统计每个 \(t\) 的贡献,则只用考虑
(设 \(A=kL+t(R-L+1),B=k(R+1)\))
\[\sum_{A\le m<B}[m\text{ 除首若干位 0 外各位不增}]\prod_{i=1}^{k-1}(m-A+i)
\]
这种形式的话……
\[\sum_{A\le m<B}[m\text{ 除首若干位 0 外各位不增}]\sum_{i=0}^{k-1}f_im^i
\\=\sum_{i=0}^{k-1}f_i\sum_{A\le m<B}[m\text{ 除首若干位 0 外各位不增}]m^i
\]
只用解决 \(\forall q\in[0,k-1]\),
\[v_q=\sum_{m<U}[m\text{ 除首若干位 0 外各位不增}]m^q
\]
这个显然可以数位 dp。
每个 \(U\) 做 dp,得到对应解的复杂度是 \(O(Bk^2\log v)\) 的,做 \(k+1\) 轮即为 \(O(Bk^3\log v)\)。
总复杂度 \(O(Bk^3\log v)\),可以通过。
加一点常数优化后可以跑得更快(利用 unsigned long long
值域分批取模),在 loj 上为 \(400{\rm ms}\) 左右。