一、题目
二、解法
要求第
k小,可以用类似线段树的方法逐位确定,先考虑全空的串,怎么求长度为
n的
borderless串?
我们定义
f[i]为长度为
i的
borderless串数量,转移考虑容斥:
f[i]=2i−j=1∑i/2f[j]×2i−2j其实上式就是用最小的局部
borderless来统计,在两端填上长度为
j的
borderless串,中间就随便填,这样每种情况只会算一次,我们就用算出来的
f[n]指导我们应该填
0/1,填
0就继续填,填
1需要用
k减去首位为
0的情况总数,如果我们的前面有了固定的几位,再讨论一下即可,并不复杂,时间复杂度
O(n3)。
咕咕咕