CSA49G
XSY3315
因为判断两串是否本质不同只看某几项是不是好数,与究竟是哪个好数无关,所以考虑转换一下题意:
给出一个长度为 a k a_k ak的01串 S S S,第 a 1 , a 2 , . . . , a k a_1,a_2,...,a_k a1,a2,...,ak项为1,其余项为0。
现要用若干个 S S S的前缀拼出串 T T T,使得 T T T中有 n n n个1,以1结尾,并且任意两个1之间0的个数不超过 m m m。问所有不同的 T T T的长度之和为多少?
S S S如果用01串表示,会很长,发现 k k k很小,考虑换一种表示方式:设 b i = a i − a i − 1 b_i=a_i-a_{i-1} bi=ai−ai−1。我们把 S S S串描述成 { b 1 , b 2 , b 3 , . . . , b k } \{b_1,b_2,b_3,...,b_k\} { b1,b2,b3,...,bk},表示 S S S由 ( b 1 − 1 ) (b_1-1) (b1−1)个0,1个1, ( b 2 − 1 ) (b_2-1) (b2−1)个0,1个1,…, ( b k − 1 ) (b_k-1) (bk−