A
略
B
B \mathcal{B} B 开头的算法,通过维护前缀最大次大值可以做到 O ( n log n ) \mathcal{O}(n\log n) O(nlogn)
C
考虑枚举一个数并判断它合不合法, 将这个数写成
K
K
K 进制小数
容易发现这个小数是
1
1
1 放到树的对应深度里面的个数进位后的结果
合法的必要条件是这个数
0.
z
1
z
2
…
z
l
0.z_1z_2\dots z_l
0.z1z2…zl 满足
∑
z
i
≤
n
,
∑
z
i
≡
n
m
o
d
K
−
1
\sum z_i\le n,\sum z_i\equiv n\mod K-1
∑zi≤n,∑zi≡nmodK−1
充分性可以通过构造得到,方法如下:
从
l
−
1
l-1
l−1 位往前做,若
∑
z
i
<
n
\sum z_i <n
∑zi<n 我们就让当前位进位
不够的时候从前面借位
我们对这个数进行
D
P
\mathcal{DP}
DP 就可以了
D
设
f
i
,
j
f_{i,j}
fi,j 表示到
i
i
i,是第
j
j
j 个的方案数
枚举
i
i
i 前面的第
j
j
j 个容斥转移