这是一篇不需要容斥,不需要注意力,不需要猜结论,不需要组合意义的题解!!1
考虑计算本质不同子序列的经典 DP。本题中,即为
fi=2fi−1−fi−m−1,意为考虑前
i 个数的本质不同子序列均可以通过前
i−1 个数的答案决策是否拼上
ai=imodm+1 得到,同时减去算重的(这部分均可通过
i−m−1 的答案拼上
ai 得到)。边界是
f0=1。
直接启动 GF。
令
F(x)=∑i≥0fixi,则根据上述递推式有:
F(x)=2xF(x)−xm+1F(x)+1
解方程,有:
F(x)=1−2x+xm+11
使用牛顿二项式定理提取系数:
Ans=[xn]F(x)=[xn]i≥0∑(i−1)(xm+1−2x)i=[xn]i≥0∑(−1)ij=0∑i(ji)x(m+1)j+(i−j)(−2)i−j=[xn]i≥0∑(−1)ij=0∑ixmj+i(−2)i−j(ji)
我们直接枚举
j,
i 可以算出来。注意要保证
i≥j。
Ans=j=0∑⌊m+1n⌋(−1)n−mj(−2)n−mj−j(jn−mj)=j=0∑⌊m+1n⌋(−1)j2n−mj−j(jn−mj)
显然对于
m 从
1 到
n,
⌊m+1n⌋ 之和是
O(nlnn) 量级的,直接计算即可。
以上。