用归纳法证明,如果当前应该取出的那组贡献为
G
0
G_0
G0,但它被拆开取出,拆开后每组贡献为
G
1
G_1
G1,
G
2
G_2
G2, …,
G
k
G_k
Gk,不妨设
G
1
≤
G
2
≤
.
.
.
≤
G
k
≤
G
0
G_1\leq G_2 \leq ... \leq G_k \leq G_0
G1≤G2≤...≤Gk≤G0,则未拆开前的总和
≥
G
1
+
G
2
+
.
.
.
+
G
k
−
1
+
G
0
≥
G
1
+
G
2
+
.
.
.
+
G
k
\geq G_1+G_2+...+G_{k-1}+G_0 \geq G_1+G_2+...+G_k
≥G1+G2+...+Gk−1+G0≥G1+G2+...+Gk,故不拆开一定不比拆开差
至于如何用这个引理计算我们的
S
U
M
SUM
SUM,还需要一个推论:若一个前缀出现的数量为
C
N
T
CNT
CNT,则它对
S
U
M
SUM
SUM 的贡献为
⌊
C
N
T
/
K
⌋
\lfloor CNT/K\rfloor
⌊CNT/K⌋;证明为,由于每个前缀都会被尽可能连续地取出,所以它一定会填满
⌊
C
N
T
/
K
⌋
\lfloor CNT/K\rfloor
⌊CNT/K⌋ 组;剩下的填不满,贡献为0