状压 $dp$ .
- 设 $f(S)$ 表示从 $1$ 开始,使得集合 $S$ 中元素所有排列均出现的最小长度.
- 预处理从位置 $i$ 开始,字母 $j$ 首次出现的位置 $nxt(i,j)$ ,可以状压 $dp$ .转移时枚举排列的最后一个元素的位置, $O(2^n\cdot n+len\cdot n)$ .
- $n\le 26$ ,似乎过不去?然而字符串长度 $\le 450$ ,最小的合法串是 $O(n^2)$ 级别, $n\ge 22$ 时一定无解.
1 |
|
夢はここに 思い出は遠くに
状压 $dp$ .
1 | #include<bits/stdc++.h> |