[ASC]PROB

一、题目

在这里插入图片描述

二、解法

要求第 k k 小,可以用类似线段树的方法逐位确定,先考虑全空的串,怎么求长度为 n n b o r d e r l e s s borderless 串?

我们定义 f [ i ] f[i] 为长度为 i i b o r d e r l e s s borderless 串数量,转移考虑容斥:
f [ i ] = 2 i j = 1 i / 2 f [ j ] × 2 i 2 j f[i]=2^i-\sum_{j=1}^{i/2}f[j]\times 2^{i-2j} 其实上式就是用最小的局部 b o r d e r l e s s borderless 来统计,在两端填上长度为 j j b o r d e r l e s s borderless 串,中间就随便填,这样每种情况只会算一次,我们就用算出来的 f [ n ] f[n] 指导我们应该填 0 / 1 0/1 ,填 0 0 就继续填,填 1 1 需要用 k k 减去首位为 0 0 的情况总数,如果我们的前面有了固定的几位,再讨论一下即可,并不复杂,时间复杂度 O ( n 3 ) O(n^3)

咕咕咕
发布了217 篇原创文章 · 获赞 12 · 访问量 5153

猜你喜欢

转载自blog.csdn.net/C202044zxy/article/details/104056467